summaryrefslogtreecommitdiff
path: root/2024-03-11-212501-5924-1@86042f6b7d94_master
diff options
context:
space:
mode:
Diffstat (limited to '2024-03-11-212501-5924-1@86042f6b7d94_master')
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/index.html146
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-25ea44.html1920
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-2f348d.html3591
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-30e8a4.html4660
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-413fe6.html2115
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-425c9c.html4660
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-4a69b4.html2115
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-563e6a.html2013
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-689d47.html4660
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-6a2986.html4711
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-6e323f.html2013
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-8fac16.html4693
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-a7ec2e.html2013
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-d0e85f.html4650
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-f1d0a2.html4136
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-f4adeb.html2013
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/report-fb6164.html1437
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/scanview.css62
-rw-r--r--2024-03-11-212501-5924-1@86042f6b7d94_master/sorttable.js492
19 files changed, 52100 insertions, 0 deletions
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/index.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/index.html
new file mode 100644
index 0000000..2e6e081
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/index.html
@@ -0,0 +1,146 @@
+<html>
+<head>
+<title>rootdir - scan-build results</title>
+<link type="text/css" rel="stylesheet" href="scanview.css"/>
+<script src="sorttable.js"></script>
+<script language='javascript' type="text/javascript">
+function SetDisplay(RowClass, DisplayVal)
+{
+ var Rows = document.getElementsByTagName("tr");
+ for ( var i = 0 ; i < Rows.length; ++i ) {
+ if (Rows[i].className == RowClass) {
+ Rows[i].style.display = DisplayVal;
+ }
+ }
+}
+
+function CopyCheckedStateToCheckButtons(SummaryCheckButton) {
+ var Inputs = document.getElementsByTagName("input");
+ for ( var i = 0 ; i < Inputs.length; ++i ) {
+ if (Inputs[i].type == "checkbox") {
+ if(Inputs[i] != SummaryCheckButton) {
+ Inputs[i].checked = SummaryCheckButton.checked;
+ Inputs[i].onclick();
+ }
+ }
+ }
+}
+
+function returnObjById( id ) {
+ if (document.getElementById)
+ var returnVar = document.getElementById(id);
+ else if (document.all)
+ var returnVar = document.all[id];
+ else if (document.layers)
+ var returnVar = document.layers[id];
+ return returnVar;
+}
+
+var NumUnchecked = 0;
+
+function ToggleDisplay(CheckButton, ClassName) {
+ if (CheckButton.checked) {
+ SetDisplay(ClassName, "");
+ if (--NumUnchecked == 0) {
+ returnObjById("AllBugsCheck").checked = true;
+ }
+ }
+ else {
+ SetDisplay(ClassName, "none");
+ NumUnchecked++;
+ returnObjById("AllBugsCheck").checked = false;
+ }
+}
+</script>
+<!-- SUMMARYENDHEAD -->
+</head>
+<body>
+<h1>rootdir - scan-build results</h1>
+
+<table>
+<tr><th>User:</th><td>root@ebfb56c73c73</td></tr>
+<tr><th>Working Directory:</th><td>/rootdir</td></tr>
+<tr><th>Command Line:</th><td>make -j 2</td></tr>
+<tr><th>Clang Version:</th><td>clang version 17.0.6 (Fedora 17.0.6-2.fc39)
+</td></tr>
+<tr><th>Date:</th><td>Mon Mar 11 21:25:01 2024</td></tr>
+</table>
+<h2>Bug Summary</h2><table>
+<thead><tr><td>Bug Type</td><td>Quantity</td><td class="sorttable_nosort">Display?</td></tr></thead>
+<tr style="font-weight:bold"><td class="SUMM_DESC">All Bugs</td><td class="Q">16</td><td><center><input type="checkbox" id="AllBugsCheck" onClick="CopyCheckedStateToCheckButtons(this);" checked/></center></td></tr>
+<tr><th>Logic error</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Garbage return value</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_garbage_return_value');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Out-of-bound access</td><td class="Q">5</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_out-of-bound_access');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Uninitialized argument value</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_uninitialized_argument_value');" checked/></center></td></tr>
+<tr><th>Memory error</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Use-after-free</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_memory_error_use-after-free');" checked/></center></td></tr>
+<tr><th>Unused code</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Dead nested assignment</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_unused_code_dead_nested_assignment');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Unreachable code</td><td class="Q">7</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_unused_code_unreachable_code');" checked/></center></td></tr>
+</table>
+<h2>Reports</h2>
+
+<table class="sortable" style="table-layout:automatic">
+<thead><tr>
+ <td>Bug Group</td>
+ <td class="sorttable_sorted">Bug Type<span id="sorttable_sortfwdind">&nbsp;&#x25BE;</span></td>
+ <td>File</td>
+ <td>Function/Method</td>
+ <td class="Q">Line</td>
+ <td class="Q">Path Length</td>
+ <td class="sorttable_nosort"></td>
+ <!-- REPORTBUGCOL -->
+</tr></thead>
+<tbody>
+<tr class="bt_unused_code_dead_nested_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead nested assignment</td><td>docs/reference/mate-desktop/mate-desktop-scan.c</td><td class="DESC">output_object_signal</td><td class="Q">188</td><td class="Q">1</td><td><a href="report-25ea44.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-25ea44.html" -->
+</tr>
+<tr class="bt_logic_error_garbage_return_value"><td class="DESC">Logic error</td><td class="DESC">Garbage return value</td><td>libmate-desktop/mate-desktop-item.c</td><td class="DESC">ditem_execute</td><td class="Q">2037</td><td class="Q">53</td><td><a href="report-6a2986.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-6a2986.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>libmate-desktop/mate-desktop-item.c</td><td class="DESC">escape_string_and_dup</td><td class="Q">3121</td><td class="Q">27</td><td><a href="report-30e8a4.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-30e8a4.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>libmate-desktop/mate-desktop-item.c</td><td class="DESC">escape_string_and_dup</td><td class="Q">3129</td><td class="Q">27</td><td><a href="report-425c9c.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-425c9c.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>libmate-desktop/mate-desktop-item.c</td><td class="DESC">escape_string_and_dup</td><td class="Q">3125</td><td class="Q">27</td><td><a href="report-689d47.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-689d47.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>libmate-desktop/mate-desktop-item.c</td><td class="DESC">escape_string_and_dup</td><td class="Q">3120</td><td class="Q">37</td><td><a href="report-8fac16.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-8fac16.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>libmate-desktop/mate-desktop-item.c</td><td class="DESC">escape_string_and_dup</td><td class="Q">3136</td><td class="Q">24</td><td><a href="report-d0e85f.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-d0e85f.html" -->
+</tr>
+<tr class="bt_logic_error_uninitialized_argument_value"><td class="DESC">Logic error</td><td class="DESC">Uninitialized argument value</td><td>libmate-desktop/mate-bg.c</td><td class="DESC">create_img_thumbnail</td><td class="Q">2258</td><td class="Q">76</td><td><a href="report-f1d0a2.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-f1d0a2.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/mate-hsv.c</td><td class="DESC">mate_hsv_button_press</td><td class="Q">670</td><td class="Q">1</td><td><a href="report-413fe6.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-413fe6.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/mate-hsv.c</td><td class="DESC">mate_hsv_button_press</td><td class="Q">652</td><td class="Q">1</td><td><a href="report-4a69b4.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-4a69b4.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/mate-languages.c</td><td class="DESC">mate_get_language_from_locale</td><td class="Q">1163</td><td class="Q">1</td><td><a href="report-563e6a.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-563e6a.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/mate-languages.c</td><td class="DESC">mate_get_country_from_locale</td><td class="Q">1218</td><td class="Q">1</td><td><a href="report-6e323f.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-6e323f.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/mate-languages.c</td><td class="DESC">mate_get_language_from_locale</td><td class="Q">1137</td><td class="Q">1</td><td><a href="report-a7ec2e.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-a7ec2e.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/mate-languages.c</td><td class="DESC">mate_get_country_from_locale</td><td class="Q">1244</td><td class="Q">1</td><td><a href="report-f4adeb.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-f4adeb.html" -->
+</tr>
+<tr class="bt_unused_code_unreachable_code"><td class="DESC">Unused code</td><td class="DESC">Unreachable code</td><td>libmate-desktop/tmp-introspecthjnu4i_a/MateDesktop-2.0.c</td><td class="DESC">value_to_string</td><td class="Q">181</td><td class="Q">1</td><td><a href="report-fb6164.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-fb6164.html" -->
+</tr>
+<tr class="bt_memory_error_use-after-free"><td class="DESC">Memory error</td><td class="DESC">Use-after-free</td><td>libmate-desktop/mate-colorsel.c</td><td class="DESC">hex_changed</td><td class="Q">1876</td><td class="Q">13</td><td><a href="report-2f348d.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-2f348d.html" -->
+</tr>
+</tbody>
+</table>
+
+</body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-25ea44.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-25ea44.html
new file mode 100644
index 0000000..0b2147b
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-25ea44.html
@@ -0,0 +1,1920 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-scan.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Although the value stored to 'event_num' is used in the enclosing expression, the value is never actually read from 'event_num' -->
+
+<!-- BUGTYPE Dead nested assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/docs/reference/mate-desktop/mate-desktop-scan.c -->
+
+<!-- FILENAME mate-desktop-scan.c -->
+
+<!-- FUNCTIONNAME output_object_signal -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 25ea44547d57d7aa1d323bfd0c1df0f1 -->
+
+<!-- BUGLINE 188 -->
+
+<!-- BUGCOLUMN 16 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>docs/reference/mate-desktop/mate-desktop-scan.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 188, column 16</a><br />Although the value stored to 'event_num' is used in the enclosing expression, the value is never actually read from 'event_num'</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-scan.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/docs/reference/mate-desktop -resource-dir /usr/bin/../lib/clang/17 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I ../../../libmate-desktop -D MATE_DESKTOP_USE_UNSTABLE_API -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/rootdir/docs/reference/mate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-scan.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"188": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"><span class='directive'>#include &lt;glib-object.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"><span class='directive'>#ifndef <span class='macro'>G_GNUC_BEGIN_IGNORE_DEPRECATIONS<span class='macro_popup'>clang diagnostic push
+ clang diagnostic ignored "-Wdeprecated-declarations"<br>
+</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"><span class='directive'># define <span class='macro'>G_GNUC_BEGIN_IGNORE_DEPRECATIONS<span class='macro_popup'>clang diagnostic push
+ clang diagnostic ignored "-Wdeprecated-declarations"<br>
+</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"><span class='directive'># define <span class='macro'>G_GNUC_END_IGNORE_DEPRECATIONS<span class='macro_popup'>clang diagnostic pop
+</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"><span class='directive'>#include &lt;mate-bg.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"><span class='directive'>#include &lt;mate-desktop-thumbnail.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"><span class='directive'>#include &lt;mate-rr-labeler.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"><span class='directive'>#ifdef GTK_IS_WIDGET_CLASS</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"><span class='keyword'>static</span> GType object_types[5];</td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='keyword'>static</span> GType *</td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line">get_object_types (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> gpointer g_object_class;</td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> gint i = 0;</td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='macro'>G_GNUC_BEGIN_IGNORE_DEPRECATIONS<span class='macro_popup'>clang diagnostic push
+ clang diagnostic ignored "-Wdeprecated-declarations"<br>
+</span></span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> object_types[i++] = mate_desktop_item_get_type ();</td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> object_types[i++] = mate_bg_get_type ();</td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> object_types[i++] = mate_desktop_thumbnail_factory_get_type ();</td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> object_types[i++] = mate_rr_labeler_get_type ();</td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> object_types[i] = <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> <span class='comment'>/* reference the GObjectClass to initialize the param spec pool</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> <span class='comment'>* potentially needed by interfaces. See http://bugs.gnome.org/571820 */</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> g_object_class = g_type_class_ref (<span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> <span class='comment'>/* Need to make sure all the types are loaded in and initialize</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> <span class='comment'>* their signals and properties.</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> <span class='keyword'>for</span> (i=0; object_types[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_CLASSED (object_types[i])<span class='macro_popup'>(g_type_test_flags ((object_types[i]), G_TYPE_FLAG_CLASSED))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> g_type_class_ref (object_types[i]);</td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_INTERFACE (object_types[i])<span class='macro_popup'>((g_type_fundamental (object_types[i])) == ((GType) ((2) &lt;&lt;<br> (2))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> g_type_default_interface_ref (object_types[i]);</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> g_type_class_unref (g_object_class);</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='macro'>G_GNUC_END_IGNORE_DEPRECATIONS<span class='macro_popup'>clang diagnostic pop
+</span></span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='keyword'>return</span> object_types;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> <span class='comment'>* This uses GObject type functions to output signal prototypes and the object</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> <span class='comment'>* hierarchy.</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='comment'>/* The output files */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"><span class='keyword'>const</span> gchar *signals_filename = <span class='string_literal'>"./mate-desktop.signals.new"</span>;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"><span class='keyword'>const</span> gchar *hierarchy_filename = <span class='string_literal'>"./mate-desktop.hierarchy.new"</span>;</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"><span class='keyword'>const</span> gchar *interfaces_filename = <span class='string_literal'>"./mate-desktop.interfaces.new"</span>;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"><span class='keyword'>const</span> gchar *prerequisites_filename = <span class='string_literal'>"./mate-desktop.prerequisites.new"</span>;</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>const</span> gchar *args_filename = <span class='string_literal'>"./mate-desktop.args.new"</span>;</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='keyword'>const</span> gchar *actions_filename = <span class='string_literal'>"./mate-desktop.actions.new"</span>;</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_signals (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_signals (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GType object_type);</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_signal (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>const</span> gchar *object_class_name,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> guint signal_id);</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> gchar * get_type_name (GType type,</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> gboolean * is_pointer);</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_hierarchy (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_hierarchy (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> GType type,</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> guint level);</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_interfaces (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_interfaces (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> GType type);</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_interface_prerequisites (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_prerequisites (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GType type);</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_args (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_args (FILE *fp, GType object_type);</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_actions (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_actions (FILE *fp, GType object_type);</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line">main (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> get_object_types ();</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> output_signals ();</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> output_object_hierarchy ();</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> output_object_interfaces ();</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> output_interface_prerequisites ();</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> output_args ();</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> output_actions ();</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line">output_signals (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> FILE *fp;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> fp = fopen (signals_filename, <span class='string_literal'>"w"</span>);</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>if</span> (fp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> g_warning (<span class='string_literal'>"Couldn't open output file: %s : %s"</span>, signals_filename, g_strerror(<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='keyword'>for</span> (i = 0; object_types[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> output_object_signals (fp, object_types[i]);</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> fclose (fp);</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line">compare_signals (<span class='keyword'>const</span> <span class='keyword'>void</span> *a, <span class='keyword'>const</span> <span class='keyword'>void</span> *b)</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>const</span> guint *signal_a = a;</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>const</span> guint *signal_b = b;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> strcmp (g_signal_name (*signal_a), g_signal_name (*signal_b));</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"><span class='comment'>/* This outputs all the signals of one object. */</span></td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line">output_object_signals (FILE *fp, GType object_type)</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='keyword'>const</span> gchar *object_class_name;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> guint *signals, n_signals;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> guint sig;</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_INSTANTIATABLE (object_type)<span class='macro_popup'>(g_type_test_flags ((object_type), G_TYPE_FLAG_INSTANTIATABLE<br>))</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>G_TYPE_IS_INTERFACE (object_type)<span class='macro_popup'>((g_type_fundamental (object_type)) == ((GType) ((2) &lt;&lt;<br> (2))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> object_class_name = g_type_name (object_type);</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> signals = g_signal_list_ids (object_type, &amp;n_signals);</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>if</span> (n_signals &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> qsort (signals, n_signals, <span class='keyword'>sizeof</span> (guint), compare_signals);</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>for</span> (sig = 0; sig &lt; n_signals; sig++) {</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> output_object_signal (fp, object_class_name, signals[sig]);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> g_free (signals);</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"><span class='comment'>/* This outputs one signal. */</span></td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line">output_object_signal (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span class='keyword'>const</span> gchar *object_name,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> guint signal_id)</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GSignalQuery query_info;</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>const</span> gchar *type_name, *ret_type, *object_arg, *arg_name;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gchar *pos, *object_arg_lower;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> gboolean is_pointer;</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> gchar buffer[1024];</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> guint i, param;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> gint param_num, widget_num, event_num, callback_num;</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> gint *arg_num;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> gchar signal_name[128];</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> gchar flags[16];</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='comment'>/* g_print ("Object: %s Signal: %u\n", object_name, signal_id);*/</span></td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> param_num = 1;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> widget_num = event_num = <span class="mrange">callback_num = 0</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:16ex; max-width:32em">Although the value stored to 'event_num' is used in the enclosing expression, the value is never actually read from 'event_num'</div></td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> g_signal_query (signal_id, &amp;query_info);</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='comment'>/* Output the signal object type and the argument name. We assume the</span></td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='comment'>* type is a pointer - I think that is OK. We remove "Gtk" or "Gnome" and</span></td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> <span class='comment'>* convert to lower case for the argument name. */</span></td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> pos = buffer;</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> sprintf (pos, <span class='string_literal'>"%s "</span>, object_name);</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> pos += strlen (pos);</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> <span class='comment'>/* Try to come up with a sensible variable name for the first arg</span></td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='comment'>* It chops off 2 know prefixes :/ and makes the name lowercase</span></td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> <span class='comment'>* It should replace lowercase -&gt; uppercase with '_'</span></td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> <span class='comment'>* GFileMonitor -&gt; file_monitor</span></td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> <span class='comment'>* GIOExtensionPoint -&gt; extension_point</span></td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='comment'>* GtkTreeView -&gt; tree_view</span></td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='comment'>* if 2nd char is upper case too</span></td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> <span class='comment'>* search for first lower case and go back one char</span></td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='comment'>* else</span></td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='comment'>* search for next upper case</span></td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>if</span> (!strncmp (object_name, <span class='string_literal'>"Gtk"</span>, 3))</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> object_arg = object_name + 3;</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strncmp (object_name, <span class='string_literal'>"Gnome"</span>, 5))</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> object_arg = object_name + 5;</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> object_arg = object_name;</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> object_arg_lower = g_ascii_strdown (object_arg, -1);</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> sprintf (pos, <span class='string_literal'>"*%s\n"</span>, object_arg_lower);</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> pos += strlen (pos);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> <span class='keyword'>if</span> (!strncmp (object_arg_lower, <span class='string_literal'>"widget"</span>, 6))</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> widget_num = 2;</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> g_free(object_arg_lower);</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='comment'>/* Convert signal name to use underscores rather than dashes '-'. */</span></td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> strncpy (signal_name, query_info.signal_name, 127);</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> signal_name[127] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> <span class='keyword'>for</span> (i = 0; signal_name[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>if</span> (signal_name[i] == '-')</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> signal_name[i] = '_';</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* Output the signal parameters. */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='keyword'>for</span> (param = 0; param &lt; query_info.n_params; param++) {</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> type_name = get_type_name (query_info.param_types[param] &amp; ~<span class='macro'>G_SIGNAL_TYPE_STATIC_SCOPE<span class='macro_popup'>(((GType) (1 &lt;&lt; 0)))</span></span>, &amp;is_pointer);</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='comment'>/* Most arguments to the callback are called "arg1", "arg2", etc.</span></td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> <span class='comment'>GtkWidgets are called "widget", "widget2", ...</span></td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> <span class='comment'>GtkCallbacks are called "callback", "callback2", ... */</span></td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type_name, <span class='string_literal'>"GtkWidget"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> arg_name = <span class='string_literal'>"widget"</span>;</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> arg_num = &amp;widget_num;</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type_name, <span class='string_literal'>"GtkCallback"</span>)</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> || !strcmp (type_name, <span class='string_literal'>"GtkCCallback"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> arg_name = <span class='string_literal'>"callback"</span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> arg_num = &amp;callback_num;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> arg_name = <span class='string_literal'>"arg"</span>;</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> arg_num = &amp;param_num;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> sprintf (pos, <span class='string_literal'>"%s "</span>, type_name);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> pos += strlen (pos);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='keyword'>if</span> (!arg_num || *arg_num == 0)</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> sprintf (pos, <span class='string_literal'>"%s%s\n"</span>, is_pointer ? <span class='string_literal'>"*"</span> : <span class='string_literal'>" "</span>, arg_name);</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> sprintf (pos, <span class='string_literal'>"%s%s%i\n"</span>, is_pointer ? <span class='string_literal'>"*"</span> : <span class='string_literal'>" "</span>, arg_name,</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> *arg_num);</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> pos += strlen (pos);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='keyword'>if</span> (arg_num) {</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> <span class='keyword'>if</span> (*arg_num == 0)</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> *arg_num = 2;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> *arg_num += 1;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> pos = flags;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> <span class='comment'>/* We use one-character flags for simplicity. */</span></td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_RUN_FIRST)</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> *pos++ = 'f';</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_RUN_LAST)</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> *pos++ = 'l';</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_RUN_CLEANUP)</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> *pos++ = 'c';</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_NO_RECURSE)</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> *pos++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_DETAILED)</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> *pos++ = 'd';</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_ACTION)</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> *pos++ = 'a';</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='keyword'>if</span> (query_info.signal_flags &amp; G_SIGNAL_NO_HOOKS)</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> *pos++ = 'h';</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> *pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='comment'>/* Output the return type and function name. */</span></td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> ret_type = get_type_name (query_info.return_type &amp; ~<span class='macro'>G_SIGNAL_TYPE_STATIC_SCOPE<span class='macro_popup'>(((GType) (1 &lt;&lt; 0)))</span></span>, &amp;is_pointer);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> fprintf (fp,</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> <span class='string_literal'>"&lt;SIGNAL&gt;\n&lt;NAME&gt;%s::%s&lt;/NAME&gt;\n&lt;RETURNS&gt;%s%s&lt;/RETURNS&gt;\n&lt;FLAGS&gt;%s&lt;/FLAGS&gt;\n%s&lt;/SIGNAL&gt;\n\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> object_name, query_info.signal_name, ret_type, is_pointer ? <span class='string_literal'>"*"</span> : <span class='string_literal'>""</span>, flags, buffer);</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"><span class='comment'>/* Returns the type name to use for a signal argument or return value, given</span></td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='comment'>the GtkType from the signal info. It also sets is_pointer to TRUE if the</span></td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='comment'>argument needs a '*' since it is a pointer. */</span></td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">get_type_name (GType type, gboolean * is_pointer)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> <span class='keyword'>const</span> gchar *type_name;</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> *is_pointer = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> type_name = g_type_name (type);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_UCHAR<span class='macro_popup'>((GType) ((4) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_BOOLEAN<span class='macro_popup'>((GType) ((5) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_LONG<span class='macro_popup'>((GType) ((8) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_ULONG<span class='macro_popup'>((GType) ((9) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_POINTER<span class='macro_popup'>((GType) ((17) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='comment'>/* These all have normal C type names so they are OK. */</span></td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>return</span> type_name;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_CHAR<span class='macro_popup'>((GType) ((3) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"char"</span>;</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_INT<span class='macro_popup'>((GType) ((6) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"int"</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_FLOAT<span class='macro_popup'>((GType) ((14) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"float"</span>;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_DOUBLE<span class='macro_popup'>((GType) ((15) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"double"</span>;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='comment'>/* A GtkString is really a gchar*. */</span></td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"char"</span>;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_FLAGS<span class='macro_popup'>((GType) ((13) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='comment'>/* We use a gint for both of these. Hopefully a subtype with a decent</span></td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> <span class='comment'>name will be registered and used instead, as GTK+ does itself. */</span></td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"int"</span>;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_BOXED<span class='macro_popup'>((GType) ((18) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='comment'>/* The boxed type shouldn't be used itself, only subtypes. Though we</span></td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='comment'>return 'gpointer' just in case. */</span></td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"gpointer"</span>;</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_PARAM<span class='macro_popup'>((GType) ((19) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='comment'>/* A GParam is really a GParamSpec*. */</span></td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"GParamSpec"</span>;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION (2, 25, 9)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (25)) || (2 == (2<br>) &amp;&amp; 78 == (25) &amp;&amp; 3 &gt;= (9)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_VARIANT<span class='macro_popup'>((GType) ((21) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"GVariant"</span>;</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"><span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='comment'>/* For all GObject subclasses we can use the class name with a "*",</span></td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>e.g. 'GtkWidget *'. */</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_type_is_a (type, G_TYPE_OBJECT)<span class='macro_popup'>((type) == (((GType) ((20) &lt;&lt; (2)))) || (g_type_is_a) (<br>(type), (((GType) ((20) &lt;&lt; (2))))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='comment'>/* Also catch non GObject root types */</span></td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_CLASSED (type)<span class='macro_popup'>(g_type_test_flags ((type), G_TYPE_FLAG_CLASSED))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='comment'>/* All boxed subtypes will be pointers as well. */</span></td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* Exception: GStrv */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_type_is_a (type, G_TYPE_BOXED)<span class='macro_popup'>((type) == (((GType) ((18) &lt;&lt; (2)))) || (g_type_is_a) (<br>(type), (((GType) ((18) &lt;&lt; (2))))))</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> !<span class='macro'>g_type_is_a (type, G_TYPE_STRV)<span class='macro_popup'>((type) == ((g_strv_get_type ())) || (g_type_is_a) ((type), (<br>(g_strv_get_type ()))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>/* All pointer subtypes will be pointers as well. */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_type_is_a (type, G_TYPE_POINTER)<span class='macro_popup'>((type) == (((GType) ((17) &lt;&lt; (2)))) || (g_type_is_a) (<br>(type), (((GType) ((17) &lt;&lt; (2))))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> *is_pointer = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='comment'>/* But enums are not */</span></td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_type_is_a (type, G_TYPE_ENUM)<span class='macro_popup'>((type) == (((GType) ((12) &lt;&lt; (2)))) || (g_type_is_a) (<br>(type), (((GType) ((12) &lt;&lt; (2))))))</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>g_type_is_a (type, G_TYPE_FLAGS)<span class='macro_popup'>((type) == (((GType) ((13) &lt;&lt; (2)))) || (g_type_is_a) (<br>(type), (((GType) ((13) &lt;&lt; (2))))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> *is_pointer = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class='keyword'>return</span> type_name;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"><span class='comment'>/* This outputs the hierarchy of all objects which have been initialized,</span></td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> <span class='comment'>i.e. by calling their XXX_get_type() initialization function. */</span></td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">output_object_hierarchy (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> FILE *fp;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> gint i,j;</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> GType root, type;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> GType root_types[5] = { <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>, };</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> fp = fopen (hierarchy_filename, <span class='string_literal'>"w"</span>);</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span class='keyword'>if</span> (fp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> g_warning (<span class='string_literal'>"Couldn't open output file: %s : %s"</span>, hierarchy_filename, g_strerror(<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> output_hierarchy (fp, <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> output_hierarchy (fp, <span class='macro'>G_TYPE_INTERFACE<span class='macro_popup'>((GType) ((2) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> <span class='keyword'>for</span> (i=0; object_types[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> root = object_types[i];</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='keyword'>while</span> ((type = g_type_parent (root))) {</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> root = type;</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> <span class='keyword'>if</span> ((root != <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>) &amp;&amp; (root != <span class='macro'>G_TYPE_INTERFACE<span class='macro_popup'>((GType) ((2) &lt;&lt; (2)))</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> <span class='keyword'>for</span> (j=0; root_types[j]; j++) {</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='keyword'>if</span> (root == root_types[j]) {</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> root = <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>; <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='keyword'>if</span>(root) {</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> root_types[j] = root;</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> output_hierarchy (fp, root, 0);</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> fclose (fp);</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"><span class='comment'>/* This is called recursively to output the hierarchy of a object. */</span></td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line">output_hierarchy (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> GType type,</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> guint level)</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> GType *children;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> guint n_children;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; level; i++)</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> fprintf (fp, <span class='string_literal'>" "</span>);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> fprintf (fp, <span class='string_literal'>"%s\n"</span>, g_type_name (type));</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> children = g_type_children (type, &amp;n_children);</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (i=0; i &lt; n_children; i++)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> output_hierarchy (fp, children[i], level + 1);</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> g_free (children);</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_object_interfaces (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> FILE *fp;</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> fp = fopen (interfaces_filename, <span class='string_literal'>"w"</span>);</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> <span class='keyword'>if</span> (fp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> g_warning (<span class='string_literal'>"Couldn't open output file: %s : %s"</span>, interfaces_filename, g_strerror(<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> output_interfaces (fp, <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> <span class='keyword'>for</span> (i = 0; object_types[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='keyword'>if</span> (!g_type_parent (object_types[i]) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> (object_types[i] != <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> <span class='macro'>G_TYPE_IS_INSTANTIATABLE (object_types[i])<span class='macro_popup'>(g_type_test_flags ((object_types[i]), G_TYPE_FLAG_INSTANTIATABLE<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> output_interfaces (fp, object_types[i]);</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> fclose (fp);</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">output_interfaces (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> GType type)</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> GType *children, *interfaces;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> guint n_children, n_interfaces;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> interfaces = g_type_interfaces (type, &amp;n_interfaces);</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='keyword'>if</span> (n_interfaces &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> fprintf (fp, <span class='string_literal'>"%s"</span>, g_type_name (type));</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='keyword'>for</span> (i=0; i &lt; n_interfaces; i++)</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> fprintf (fp, <span class='string_literal'>" %s"</span>, g_type_name (interfaces[i]));</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> fprintf (fp, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> g_free (interfaces);</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> children = g_type_children (type, &amp;n_children);</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>for</span> (i=0; i &lt; n_children; i++)</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> output_interfaces (fp, children[i]);</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> g_free (children);</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> output_interface_prerequisites (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> FILE *fp;</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> fp = fopen (prerequisites_filename, <span class='string_literal'>"w"</span>);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> <span class='keyword'>if</span> (fp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> g_warning (<span class='string_literal'>"Couldn't open output file: %s : %s"</span>, prerequisites_filename, g_strerror(<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> output_prerequisites (fp, <span class='macro'>G_TYPE_INTERFACE<span class='macro_popup'>((GType) ((2) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> fclose (fp);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line">output_prerequisites (FILE *fp,</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> GType type)</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,1,0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (1)) || (2 == (2)<br> &amp;&amp; 78 == (1) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> GType *children, *prerequisites;</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> guint n_children, n_prerequisites;</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> prerequisites = g_type_interface_prerequisites (type, &amp;n_prerequisites);</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> <span class='keyword'>if</span> (n_prerequisites &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> fprintf (fp, <span class='string_literal'>"%s"</span>, g_type_name (type));</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> <span class='keyword'>for</span> (i=0; i &lt; n_prerequisites; i++)</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> fprintf (fp, <span class='string_literal'>" %s"</span>, g_type_name (prerequisites[i]));</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> fprintf (fp, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> g_free (prerequisites);</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> children = g_type_children (type, &amp;n_children);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='keyword'>for</span> (i=0; i &lt; n_children; i++)</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> output_prerequisites (fp, children[i]);</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> g_free (children);</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line">output_actions (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> FILE *fp;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> fp = fopen (actions_filename, <span class='string_literal'>"w"</span>);</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> <span class='keyword'>if</span> (fp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> g_warning (<span class='string_literal'>"Couldn't open output file: %s : %s"</span>, actions_filename, g_strerror(<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> <span class='keyword'>for</span> (i = 0; object_types[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> output_object_actions (fp, object_types[i]);</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> fclose (fp);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line">output_object_actions (FILE *fp, GType object_type)</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> gpointer class;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>G_TYPE_IS_OBJECT (object_type)<span class='macro_popup'>((g_type_fundamental (object_type)) == ((GType) ((20) &lt;&lt;<br> (2))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> class = g_type_class_peek (object_type);</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> <span class='keyword'>if</span> (!class)</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"><span class='directive'>#ifdef GTK_IS_WIDGET_CLASS</span></td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"><span class='directive'>#if <span class='macro'>GTK_CHECK_VERSION(3,96,0)<span class='macro_popup'>((3) &gt; (3) || ((3) == (3) &amp;&amp; (24) &gt; (96)) || ((<br>3) == (3) &amp;&amp; (24) == (96) &amp;&amp; (41) &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_WIDGET_CLASS (class)<span class='macro_popup'>(((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((class<br>)); GType __t = ((gtk_widget_get_type ())); gboolean __r; if (<br>!__class) __r = (0); else if (__class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_class_is_a (__class, __t); __r<br>; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> guint i = 0;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *action_name;</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> GType owner;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>const</span> GVariantType *parameter_type;</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *property_name;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='keyword'>const</span> gchar *object_class_name;</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> object_class_name = g_type_name (object_type);</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>while</span> (gtk_widget_class_query_action (<span class='macro'>GTK_WIDGET_CLASS (class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((class)), ((gtk_widget_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> i,</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> &amp;owner,</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> &amp;action_name,</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> &amp;parameter_type,</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> &amp;property_name)) {</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> i++;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> <span class='keyword'>if</span> (owner == <span class='macro'>G_TYPE_FROM_CLASS (class)<span class='macro_popup'>(((GTypeClass*) (class))-&gt;g_type)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> fprintf (fp, <span class='string_literal'>"&lt;ACTION&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='string_literal'>"&lt;NAME&gt;%s:::%s&lt;/NAME&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='string_literal'>"&lt;PARAMETER&gt;%s&lt;/PARAMETER&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> <span class='string_literal'>"&lt;PROPERTY&gt;%s&lt;/PROPERTY&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='string_literal'>"&lt;/ACTION&gt;\n\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> object_class_name,</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> action_name,</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> parameter_type ? g_variant_type_peek_string (parameter_type) : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> property_name ? property_name : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line">output_args (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> FILE *fp;</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> fp = fopen (args_filename, <span class='string_literal'>"w"</span>);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> <span class='keyword'>if</span> (fp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> g_warning (<span class='string_literal'>"Couldn't open output file: %s : %s"</span>, args_filename, g_strerror(<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> <span class='keyword'>for</span> (i = 0; object_types[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> output_object_args (fp, object_types[i]);</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> fclose (fp);</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line">compare_param_specs (<span class='keyword'>const</span> <span class='keyword'>void</span> *a, <span class='keyword'>const</span> <span class='keyword'>void</span> *b)</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> GParamSpec *spec_a = *(GParamSpec **)a;</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> GParamSpec *spec_b = *(GParamSpec **)b;</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> <span class='keyword'>return</span> strcmp (g_param_spec_get_name (spec_a), g_param_spec_get_name (spec_b));</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"><span class='comment'>/* Its common to have unsigned properties restricted</span></td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='comment'>* to the signed range. Therefore we make this look</span></td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> <span class='comment'>* a bit nicer by spelling out the max constants.</span></td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"><span class='comment'>/* Don't use "==" with floats, it might trigger a gcc warning. */</span></td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"><span class='directive'>#define <span class='macro'>GTKDOC_COMPARE_FLOAT(x, y)<span class='macro_popup'>(x &lt;= y &amp;&amp; x &gt;= y)</span></span> (x &lt;= y &amp;&amp; x &gt;= y)</span></td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"><span class='keyword'>static</span> gchar*</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line">describe_double_constant (gdouble value)</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> gchar *desc;</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (value, G_MAXDOUBLE)<span class='macro_popup'>(value &lt;= 1.7976931348623157e+308 &amp;&amp; value &gt;= 1.7976931348623157e+308<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXDOUBLE"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXDOUBLE")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (value, G_MINDOUBLE)<span class='macro_popup'>(value &lt;= 2.2250738585072014e-308 &amp;&amp; value &gt;= 2.2250738585072014e-308<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MINDOUBLE"</span>)<span class='macro_popup'>g_strdup_inline ("G_MINDOUBLE")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (value, -G_MAXDOUBLE)<span class='macro_popup'>(value &lt;= -1.7976931348623157e+308 &amp;&amp; value &gt;= -<br>1.7976931348623157e+308)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"-G_MAXDOUBLE"</span>)<span class='macro_popup'>g_strdup_inline ("-G_MAXDOUBLE")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (value, (gdouble)G_MAXFLOAT)<span class='macro_popup'>(value &lt;= (gdouble)3.40282347e+38F &amp;&amp; value &gt;= (<br>gdouble)3.40282347e+38F)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXFLOAT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXFLOAT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (value, (gdouble)G_MINFLOAT)<span class='macro_popup'>(value &lt;= (gdouble)1.17549435e-38F &amp;&amp; value &gt;= (<br>gdouble)1.17549435e-38F)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MINFLOAT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MINFLOAT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (value, (gdouble)-G_MAXFLOAT)<span class='macro_popup'>(value &lt;= (gdouble)-3.40282347e+38F &amp;&amp; value &gt;=<br> (gdouble)-3.40282347e+38F)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"-G_MAXFLOAT"</span>)<span class='macro_popup'>g_strdup_inline ("-G_MAXFLOAT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='keyword'>else</span>{</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> <span class='comment'>/* make sure floats are output with a decimal dot irrespective of</span></td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> <span class='comment'>* current locale. Use formatd since we want human-readable numbers</span></td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> <span class='comment'>* and do not need the exact same bit representation when deserialising */</span></td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> desc = g_malloc0 (<span class='macro'>G_ASCII_DTOSTR_BUF_SIZE<span class='macro_popup'>(29 + 10)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> g_ascii_formatd (desc, <span class='macro'>G_ASCII_DTOSTR_BUF_SIZE<span class='macro_popup'>(29 + 10)</span></span>, <span class='string_literal'>"%g"</span>, value);</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> <span class='keyword'>return</span> desc;</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"><span class='keyword'>static</span> gchar*</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line">describe_signed_constant (gsize size, gint64 value)</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> gchar *desc = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='keyword'>switch</span> (size) {</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='keyword'>case</span> 2:</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='keyword'>if</span> (<span class='keyword'>sizeof</span> (<span class='keyword'>int</span>) == 2) {</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXINT<span class='macro_popup'>2147483647</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXINT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXINT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MININT<span class='macro_popup'>(-2147483647 -1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MININT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MININT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='keyword'>case</span> 4:</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='keyword'>if</span> (<span class='keyword'>sizeof</span> (<span class='keyword'>int</span>) == 4) {</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXINT<span class='macro_popup'>2147483647</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXINT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXINT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MININT<span class='macro_popup'>(-2147483647 -1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MININT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MININT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXLONG<span class='macro_popup'>9223372036854775807L</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXLONG"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXLONG")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MINLONG<span class='macro_popup'>(-9223372036854775807L -1L)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MINLONG"</span>)<span class='macro_popup'>g_strdup_inline ("G_MINLONG")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='keyword'>case</span> 8:</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXINT64<span class='macro_popup'>(0x7fffffffffffffffL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXINT64"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXINT64")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MININT64<span class='macro_popup'>((gint64) (-(0x7fffffffffffffffL) - (1L)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MININT64"</span>)<span class='macro_popup'>g_strdup_inline ("G_MININT64")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='keyword'>if</span> (!desc)</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%"</span> <span class='macro'>G_GINT64_FORMAT<span class='macro_popup'>"li"</span></span>, value);</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>return</span> desc;</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"><span class='keyword'>static</span> gchar*</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line">describe_unsigned_constant (gsize size, guint64 value)</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> gchar *desc = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>switch</span> (size) {</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> <span class='keyword'>case</span> 2:</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> <span class='keyword'>if</span> (<span class='keyword'>sizeof</span> (<span class='keyword'>int</span>) == 2) {</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> <span class='keyword'>if</span> (value == (guint64)<span class='macro'>G_MAXINT<span class='macro_popup'>2147483647</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXINT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXINT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXUINT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXUINT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> <span class='keyword'>case</span> 4:</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (<span class='keyword'>sizeof</span> (<span class='keyword'>int</span>) == 4) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='keyword'>if</span> (value == (guint64)<span class='macro'>G_MAXINT<span class='macro_popup'>2147483647</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXINT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXINT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXUINT"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXUINT")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='keyword'>if</span> (desc == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> <span class='keyword'>if</span> (value == (guint64)<span class='macro'>G_MAXLONG<span class='macro_popup'>9223372036854775807L</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXLONG"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXLONG")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXULONG<span class='macro_popup'>(9223372036854775807L *2UL+1UL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXULONG"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXULONG")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>case</span> 8:</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXINT64<span class='macro_popup'>(0x7fffffffffffffffL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXINT64"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXINT64")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (value == <span class='macro'>G_MAXUINT64<span class='macro_popup'>(0xffffffffffffffffUL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"G_MAXUINT64"</span>)<span class='macro_popup'>g_strdup_inline ("G_MAXUINT64")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> (!desc)</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%"</span> <span class='macro'>G_GUINT64_FORMAT<span class='macro_popup'>"lu"</span></span>, value);</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='keyword'>return</span> desc;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"><span class='keyword'>static</span> gchar*</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line">describe_type (GParamSpec *spec)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> gchar *desc;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> gchar *lower;</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> gchar *upper;</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_CHAR (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[0])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> GParamSpecChar *pspec = <span class='macro'>G_PARAM_SPEC_CHAR (spec)<span class='macro_popup'>((((GParamSpecChar*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[0]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> lower = describe_signed_constant (<span class='keyword'>sizeof</span>(gchar), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> upper = describe_signed_constant (<span class='keyword'>sizeof</span>(gchar), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MININT8<span class='macro_popup'>((gint8) (-((gint8) 0x7f) - 1))</span></span> &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXINT8<span class='macro_popup'>((gint8) 0x7f)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MININT8<span class='macro_popup'>((gint8) (-((gint8) 0x7f) - 1))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXINT8<span class='macro_popup'>((gint8) 0x7f)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UCHAR (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[1])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> GParamSpecUChar *pspec = <span class='macro'>G_PARAM_SPEC_UCHAR (spec)<span class='macro_popup'>((((GParamSpecUChar*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[1]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> lower = describe_unsigned_constant (<span class='keyword'>sizeof</span>(guchar), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> upper = describe_unsigned_constant (<span class='keyword'>sizeof</span>(guchar), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == 0 &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXUINT8<span class='macro_popup'>((guint8) 0xff)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == 0)</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXUINT8<span class='macro_popup'>((guint8) 0xff)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_INT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[3])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> GParamSpecInt *pspec = <span class='macro'>G_PARAM_SPEC_INT (spec)<span class='macro_popup'>((((GParamSpecInt*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[3]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> lower = describe_signed_constant (<span class='keyword'>sizeof</span>(gint), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> upper = describe_signed_constant (<span class='keyword'>sizeof</span>(gint), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MININT<span class='macro_popup'>(-2147483647 -1)</span></span> &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXINT<span class='macro_popup'>2147483647</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MININT<span class='macro_popup'>(-2147483647 -1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXINT<span class='macro_popup'>2147483647</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UINT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[4])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> GParamSpecUInt *pspec = <span class='macro'>G_PARAM_SPEC_UINT (spec)<span class='macro_popup'>((((GParamSpecUInt*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[4]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> lower = describe_unsigned_constant (<span class='keyword'>sizeof</span>(guint), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> upper = describe_unsigned_constant (<span class='keyword'>sizeof</span>(guint), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == 0 &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == 0)</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_LONG (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[5])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> GParamSpecLong *pspec = <span class='macro'>G_PARAM_SPEC_LONG (spec)<span class='macro_popup'>((((GParamSpecLong*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[5]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> lower = describe_signed_constant (<span class='keyword'>sizeof</span>(glong), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> upper = describe_signed_constant (<span class='keyword'>sizeof</span>(glong), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MINLONG<span class='macro_popup'>(-9223372036854775807L -1L)</span></span> &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXLONG<span class='macro_popup'>9223372036854775807L</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MINLONG<span class='macro_popup'>(-9223372036854775807L -1L)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXLONG<span class='macro_popup'>9223372036854775807L</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_ULONG (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[6])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> GParamSpecULong *pspec = <span class='macro'>G_PARAM_SPEC_ULONG (spec)<span class='macro_popup'>((((GParamSpecULong*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[6]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> lower = describe_unsigned_constant (<span class='keyword'>sizeof</span>(gulong), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> upper = describe_unsigned_constant (<span class='keyword'>sizeof</span>(gulong), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == 0 &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXULONG<span class='macro_popup'>(9223372036854775807L *2UL+1UL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == 0)</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXULONG<span class='macro_popup'>(9223372036854775807L *2UL+1UL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_INT64 (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[7])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> GParamSpecInt64 *pspec = <span class='macro'>G_PARAM_SPEC_INT64 (spec)<span class='macro_popup'>((((GParamSpecInt64*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[7]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> lower = describe_signed_constant (<span class='keyword'>sizeof</span>(gint64), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> upper = describe_signed_constant (<span class='keyword'>sizeof</span>(gint64), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MININT64<span class='macro_popup'>((gint64) (-(0x7fffffffffffffffL) - (1L)))</span></span> &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXINT64<span class='macro_popup'>(0x7fffffffffffffffL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == <span class='macro'>G_MININT64<span class='macro_popup'>((gint64) (-(0x7fffffffffffffffL) - (1L)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXINT64<span class='macro_popup'>(0x7fffffffffffffffL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UINT64 (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[8])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> GParamSpecUInt64 *pspec = <span class='macro'>G_PARAM_SPEC_UINT64 (spec)<span class='macro_popup'>((((GParamSpecUInt64*) (void *) g_type_check_instance_cast ((<br>GTypeInstance*) ((spec)), ((g_param_spec_types[8]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> lower = describe_unsigned_constant (<span class='keyword'>sizeof</span>(guint64), pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> upper = describe_unsigned_constant (<span class='keyword'>sizeof</span>(guint64), pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;minimum == 0 &amp;&amp; pspec-&gt;maximum == <span class='macro'>G_MAXUINT64<span class='macro_popup'>(0xffffffffffffffffUL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;minimum == 0)</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (pspec-&gt;maximum == <span class='macro'>G_MAXUINT64<span class='macro_popup'>(0xffffffffffffffffUL)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_FLOAT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[12])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> GParamSpecFloat *pspec = <span class='macro'>G_PARAM_SPEC_FLOAT (spec)<span class='macro_popup'>((((GParamSpecFloat*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[12]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> lower = describe_double_constant (pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> upper = describe_double_constant (pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (pspec-&gt;minimum, -G_MAXFLOAT)<span class='macro_popup'>(pspec-&gt;minimum &lt;= -3.40282347e+38F &amp;&amp; pspec-&gt;<br>minimum &gt;= -3.40282347e+38F)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (pspec-&gt;maximum, G_MAXFLOAT)<span class='macro_popup'>(pspec-&gt;maximum &lt;= 3.40282347e+38F &amp;&amp; pspec-&gt;<br>maximum &gt;= 3.40282347e+38F)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (pspec-&gt;maximum, G_MAXFLOAT)<span class='macro_popup'>(pspec-&gt;maximum &lt;= 3.40282347e+38F &amp;&amp; pspec-&gt;<br>maximum &gt;= 3.40282347e+38F)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_DOUBLE (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[13])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GParamSpecDouble *pspec = <span class='macro'>G_PARAM_SPEC_DOUBLE (spec)<span class='macro_popup'>((((GParamSpecDouble*) (void *) g_type_check_instance_cast ((<br>GTypeInstance*) ((spec)), ((g_param_spec_types[13]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> lower = describe_double_constant (pspec-&gt;minimum);</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> upper = describe_double_constant (pspec-&gt;maximum);</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (pspec-&gt;minimum, -G_MAXDOUBLE)<span class='macro_popup'>(pspec-&gt;minimum &lt;= -1.7976931348623157e+308 &amp;&amp; pspec<br>-&gt;minimum &gt;= -1.7976931348623157e+308)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (pspec-&gt;maximum, G_MAXDOUBLE)<span class='macro_popup'>(pspec-&gt;maximum &lt;= 1.7976931348623157e+308 &amp;&amp; pspec<br>-&gt;maximum &gt;= 1.7976931348623157e+308)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&lt;= %s"</span>, upper);</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>GTKDOC_COMPARE_FLOAT (pspec-&gt;maximum, G_MAXDOUBLE)<span class='macro_popup'>(pspec-&gt;maximum &lt;= 1.7976931348623157e+308 &amp;&amp; pspec<br>-&gt;maximum &gt;= 1.7976931348623157e+308)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"&gt;= %s"</span>, lower);</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"[%s,%s]"</span>, lower, upper);</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> g_free (lower);</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> g_free (upper);</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION (2, 12, 0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (12)) || (2 == (2<br>) &amp;&amp; 78 == (12) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_GTYPE (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[21])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> GParamSpecGType *pspec = <span class='macro'>G_PARAM_SPEC_GTYPE (spec)<span class='macro_popup'>((((GParamSpecGType*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[21]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> gboolean is_pointer;</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> desc = <span class='macro'>g_strdup (get_type_name (pspec-&gt;is_a_type, &amp;is_pointer))<span class='macro_popup'>g_strdup_inline (get_type_name (pspec-&gt;is_a_type, &amp;is_pointer<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION (2, 25, 9)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (25)) || (2 == (2<br>) &amp;&amp; 78 == (25) &amp;&amp; 3 &gt;= (9)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_VARIANT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[22])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> GParamSpecVariant *pspec = <span class='macro'>G_PARAM_SPEC_VARIANT (spec)<span class='macro_popup'>((((GParamSpecVariant*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((spec)), ((g_param_spec_types[22]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> gchar *variant_type;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> variant_type = g_variant_type_dup_string (pspec-&gt;type);</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"GVariant&lt;%s&gt;"</span>, variant_type);</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> g_free (variant_type);</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='keyword'>return</span> desc;</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"><span class='keyword'>static</span> gchar*</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line">describe_default (GParamSpec *spec)</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> gchar *desc;</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_CHAR (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[0])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> GParamSpecChar *pspec = <span class='macro'>G_PARAM_SPEC_CHAR (spec)<span class='macro_popup'>((((GParamSpecChar*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[0]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%d"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UCHAR (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[1])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> GParamSpecUChar *pspec = <span class='macro'>G_PARAM_SPEC_UCHAR (spec)<span class='macro_popup'>((((GParamSpecUChar*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[1]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%u"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_BOOLEAN (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[2])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> GParamSpecBoolean *pspec = <span class='macro'>G_PARAM_SPEC_BOOLEAN (spec)<span class='macro_popup'>((((GParamSpecBoolean*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((spec)), ((g_param_spec_types[2]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%s"</span>, pspec-&gt;default_value ? <span class='string_literal'>"TRUE"</span> : <span class='string_literal'>"FALSE"</span>);</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_INT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[3])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> GParamSpecInt *pspec = <span class='macro'>G_PARAM_SPEC_INT (spec)<span class='macro_popup'>((((GParamSpecInt*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[3]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%d"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UINT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[4])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> GParamSpecUInt *pspec = <span class='macro'>G_PARAM_SPEC_UINT (spec)<span class='macro_popup'>((((GParamSpecUInt*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[4]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%u"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_LONG (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[5])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> GParamSpecLong *pspec = <span class='macro'>G_PARAM_SPEC_LONG (spec)<span class='macro_popup'>((((GParamSpecLong*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[5]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%ld"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_LONG (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[5])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> GParamSpecULong *pspec = <span class='macro'>G_PARAM_SPEC_ULONG (spec)<span class='macro_popup'>((((GParamSpecULong*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[6]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%lu"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_INT64 (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[7])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> GParamSpecInt64 *pspec = <span class='macro'>G_PARAM_SPEC_INT64 (spec)<span class='macro_popup'>((((GParamSpecInt64*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[7]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%"</span> <span class='macro'>G_GINT64_FORMAT<span class='macro_popup'>"li"</span></span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UINT64 (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[8])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> GParamSpecUInt64 *pspec = <span class='macro'>G_PARAM_SPEC_UINT64 (spec)<span class='macro_popup'>((((GParamSpecUInt64*) (void *) g_type_check_instance_cast ((<br>GTypeInstance*) ((spec)), ((g_param_spec_types[8]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%"</span> <span class='macro'>G_GUINT64_FORMAT<span class='macro_popup'>"lu"</span></span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_UNICHAR (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[9])); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> GParamSpecUnichar *pspec = <span class='macro'>G_PARAM_SPEC_UNICHAR (spec)<span class='macro_popup'>((((GParamSpecUnichar*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((spec)), ((g_param_spec_types[9]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='keyword'>if</span> (g_unichar_isprint (pspec-&gt;default_value))</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"'%c'"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%u"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_ENUM (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[10])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> GParamSpecEnum *pspec = <span class='macro'>G_PARAM_SPEC_ENUM (spec)<span class='macro_popup'>((((GParamSpecEnum*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[10]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> GEnumValue *value = g_enum_get_value (pspec-&gt;enum_class, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%s"</span>, value-&gt;value_name);</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%d"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_FLAGS (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[11])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> GParamSpecFlags *pspec = <span class='macro'>G_PARAM_SPEC_FLAGS (spec)<span class='macro_popup'>((((GParamSpecFlags*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[11]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> guint default_value;</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> GString *acc;</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> default_value = pspec-&gt;default_value;</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> acc = g_string_new (<span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='keyword'>while</span> (default_value) {</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> GFlagsValue *value = g_flags_get_first_value (pspec-&gt;flags_class, default_value);</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> <span class='keyword'>if</span> (!value)</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> <span class='keyword'>if</span> (acc-&gt;len &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='macro'>g_string_append (acc, <span class='string_literal'>" | "</span>)<span class='macro_popup'>(__builtin_constant_p (" | ") ? __extension__ ({ const char *<br> const __val = (" | "); g_string_append_len_inline (acc, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (acc, " | "<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='macro'>g_string_append (acc, value-&gt;value_name)<span class='macro_popup'>(__builtin_constant_p (value-&gt;value_name) ? __extension__ (<br>{ const char * const __val = (value-&gt;value_name); g_string_append_len_inline<br> (acc, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (acc, value-&gt;value_name, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> default_value &amp;= ~value-&gt;value;</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='keyword'>if</span> (default_value == 0)</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> desc = <span class='macro'>g_string_free (acc, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((acc)<br>, ((0))) : g_string_free_and_steal (acc)) : (g_string_free) (<br>(acc), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"%d"</span>, pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='macro'>g_string_free (acc, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(acc), ((!(0)))) : g_string_free_and_steal (acc)) : (g_string_free<br>) ((acc), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_FLOAT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[12])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> GParamSpecFloat *pspec = <span class='macro'>G_PARAM_SPEC_FLOAT (spec)<span class='macro_popup'>((((GParamSpecFloat*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((spec)), ((g_param_spec_types[12]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> <span class='comment'>/* make sure floats are output with a decimal dot irrespective of</span></td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='comment'>* current locale. Use formatd since we want human-readable numbers</span></td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> <span class='comment'>* and do not need the exact same bit representation when deserialising */</span></td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> desc = g_malloc0 (<span class='macro'>G_ASCII_DTOSTR_BUF_SIZE<span class='macro_popup'>(29 + 10)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> g_ascii_formatd (desc, <span class='macro'>G_ASCII_DTOSTR_BUF_SIZE<span class='macro_popup'>(29 + 10)</span></span>, <span class='string_literal'>"%g"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_DOUBLE (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[13])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> GParamSpecDouble *pspec = <span class='macro'>G_PARAM_SPEC_DOUBLE (spec)<span class='macro_popup'>((((GParamSpecDouble*) (void *) g_type_check_instance_cast ((<br>GTypeInstance*) ((spec)), ((g_param_spec_types[13]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='comment'>/* make sure floats are output with a decimal dot irrespective of</span></td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> <span class='comment'>* current locale. Use formatd since we want human-readable numbers</span></td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> <span class='comment'>* and do not need the exact same bit representation when deserialising */</span></td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> desc = g_malloc0 (<span class='macro'>G_ASCII_DTOSTR_BUF_SIZE<span class='macro_popup'>(29 + 10)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> g_ascii_formatd (desc, <span class='macro'>G_ASCII_DTOSTR_BUF_SIZE<span class='macro_popup'>(29 + 10)</span></span>, <span class='string_literal'>"%g"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> pspec-&gt;default_value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_STRING (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[14])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> GParamSpecString *pspec = <span class='macro'>G_PARAM_SPEC_STRING (spec)<span class='macro_popup'>((((GParamSpecString*) (void *) g_type_check_instance_cast ((<br>GTypeInstance*) ((spec)), ((g_param_spec_types[14]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;default_value) {</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> gchar *esc = g_strescape (pspec-&gt;default_value, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"\"%s\""</span>, esc);</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> desc = g_strdup_printf (<span class='string_literal'>"NULL"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION (2, 25, 9)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (25)) || (2 == (2<br>) &amp;&amp; 78 == (25) &amp;&amp; 3 &gt;= (9)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_IS_PARAM_SPEC_VARIANT (spec)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(spec)); GType __t = ((g_param_spec_types[22])); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> GParamSpecVariant *pspec = <span class='macro'>G_PARAM_SPEC_VARIANT (spec)<span class='macro_popup'>((((GParamSpecVariant*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((spec)), ((g_param_spec_types[22]))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>if</span> (pspec-&gt;default_value)</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> desc = g_variant_print (pspec-&gt;default_value, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>"NULL"</span>)<span class='macro_popup'>g_strdup_inline ("NULL")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> desc = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> <span class='keyword'>return</span> desc;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line">output_object_args (FILE *fp, GType object_type)</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> gpointer class;</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span class='keyword'>const</span> gchar *object_class_name;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> guint arg;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gchar flags[16], *pos;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> GParamSpec **properties;</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> guint n_properties;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> gboolean child_prop;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> gboolean style_prop;</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> gboolean is_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> <span class='keyword'>const</span> gchar *type_name;</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> gchar *type_desc;</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> gchar *default_value;</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_OBJECT (object_type)<span class='macro_popup'>((g_type_fundamental (object_type)) == ((GType) ((20) &lt;&lt;<br> (2))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> class = g_type_class_peek (object_type);</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> <span class='keyword'>if</span> (!class)</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> properties = g_object_class_list_properties (class, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_MAJOR_VERSION<span class='macro_popup'>2</span></span> &gt; 2 || (<span class='macro'>GLIB_MAJOR_VERSION<span class='macro_popup'>2</span></span> == 2 &amp;&amp; <span class='macro'>GLIB_MINOR_VERSION<span class='macro_popup'>78</span></span> &gt;= 3)</span></td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_INTERFACE (object_type)<span class='macro_popup'>((g_type_fundamental (object_type)) == ((GType) ((2) &lt;&lt;<br> (2))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> class = g_type_default_interface_ref (object_type);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> <span class='keyword'>if</span> (!class)</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> properties = g_object_interface_list_properties (class, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> object_class_name = g_type_name (object_type);</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> child_prop = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> style_prop = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>while</span> (<span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='keyword'>if</span> (n_properties &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> qsort (properties, n_properties, <span class='keyword'>sizeof</span> (GParamSpec *), compare_param_specs);</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='keyword'>for</span> (arg = 0; arg &lt; n_properties; arg++) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> GParamSpec *spec = properties[arg];</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='keyword'>const</span> gchar *nick, *blurb, *dot;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>if</span> (spec-&gt;owner_type != object_type)</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> pos = flags;</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='comment'>/* We use one-character flags for simplicity. */</span></td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> <span class='keyword'>if</span> (child_prop &amp;&amp; !style_prop)</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> *pos++ = 'c';</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>if</span> (style_prop)</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> *pos++ = 's';</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='keyword'>if</span> (spec-&gt;flags &amp; G_PARAM_READABLE)</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> *pos++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>if</span> (spec-&gt;flags &amp; G_PARAM_WRITABLE)</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> *pos++ = 'w';</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='keyword'>if</span> (spec-&gt;flags &amp; G_PARAM_CONSTRUCT)</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> *pos++ = 'x';</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> <span class='keyword'>if</span> (spec-&gt;flags &amp; G_PARAM_CONSTRUCT_ONLY)</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> *pos++ = 'X';</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> *pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> nick = g_param_spec_get_nick (spec);</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> blurb = g_param_spec_get_blurb (spec);</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> dot = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='keyword'>if</span> (blurb) {</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='keyword'>int</span> str_len = strlen (blurb);</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='keyword'>if</span> (str_len &gt; 0 &amp;&amp; blurb[str_len - 1] != '.')</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> dot = <span class='string_literal'>"."</span>;</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> type_desc = describe_type (spec);</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> default_value = describe_default (spec);</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> type_name = get_type_name (spec-&gt;value_type, &amp;is_pointer);</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> fprintf (fp, <span class='string_literal'>"&lt;ARG&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='string_literal'>"&lt;NAME&gt;%s::%s&lt;/NAME&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='string_literal'>"&lt;TYPE&gt;%s%s&lt;/TYPE&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='string_literal'>"&lt;RANGE&gt;%s&lt;/RANGE&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='string_literal'>"&lt;FLAGS&gt;%s&lt;/FLAGS&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='string_literal'>"&lt;NICK&gt;%s&lt;/NICK&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='string_literal'>"&lt;BLURB&gt;%s%s&lt;/BLURB&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='string_literal'>"&lt;DEFAULT&gt;%s&lt;/DEFAULT&gt;\n"</span></td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> <span class='string_literal'>"&lt;/ARG&gt;\n\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> object_class_name, g_param_spec_get_name (spec), type_name,</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> is_pointer ? <span class='string_literal'>"*"</span> : <span class='string_literal'>""</span>, type_desc, flags, nick ? nick : <span class='string_literal'>"(null)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> blurb ? blurb : <span class='string_literal'>"(null)"</span>, dot, default_value);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> g_free (type_desc);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (default_value);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> g_free (properties);</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"><span class='directive'>#ifdef GTK_IS_CONTAINER_CLASS</span></td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"><span class='directive'>#if !<span class='macro'>GTK_CHECK_VERSION(3,96,0)<span class='macro_popup'>((3) &gt; (3) || ((3) == (3) &amp;&amp; (24) &gt; (96)) || ((<br>3) == (3) &amp;&amp; (24) == (96) &amp;&amp; (41) &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='keyword'>if</span> (!child_prop &amp;&amp; <span class='macro'>GTK_IS_CONTAINER_CLASS (class)<span class='macro_popup'>(((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((class<br>)); GType __t = ((gtk_container_get_type ())); gboolean __r; if<br> (!__class) __r = (0); else if (__class-&gt;g_type == __t) __r<br> = (!(0)); else __r = g_type_check_class_is_a (__class, __t);<br> __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> properties = gtk_container_class_list_child_properties (class, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> child_prop = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"><span class='directive'>#ifdef GTK_IS_CELL_AREA_CLASS</span></td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> <span class='keyword'>if</span> (!child_prop &amp;&amp; <span class='macro'>GTK_IS_CELL_AREA_CLASS (class)<span class='macro_popup'>(((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((class<br>)); GType __t = ((gtk_cell_area_get_type ())); gboolean __r; if<br> (!__class) __r = (0); else if (__class-&gt;g_type == __t) __r<br> = (!(0)); else __r = g_type_check_class_is_a (__class, __t);<br> __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> properties = gtk_cell_area_class_list_cell_properties (class, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> child_prop = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"><span class='directive'>#ifdef GTK_IS_WIDGET_CLASS</span></td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"><span class='directive'>#if <span class='macro'>GTK_CHECK_VERSION(2,1,0)<span class='macro_popup'>((3) &gt; (2) || ((3) == (2) &amp;&amp; (24) &gt; (1)) || ((3<br>) == (2) &amp;&amp; (24) == (1) &amp;&amp; (41) &gt;= (0)))</span></span> &amp;&amp; !<span class='macro'>GTK_CHECK_VERSION(3,89,2)<span class='macro_popup'>((3) &gt; (3) || ((3) == (3) &amp;&amp; (24) &gt; (89)) || ((<br>3) == (3) &amp;&amp; (24) == (89) &amp;&amp; (41) &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='keyword'>if</span> (!style_prop &amp;&amp; <span class='macro'>GTK_IS_WIDGET_CLASS (class)<span class='macro_popup'>(((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((class<br>)); GType __t = ((gtk_widget_get_type ())); gboolean __r; if (<br>!__class) __r = (0); else if (__class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_class_is_a (__class, __t); __r<br>; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> properties = gtk_widget_class_list_style_properties (<span class='macro'>GTK_WIDGET_CLASS (class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((class)), ((gtk_widget_get_type ()))))))</span></span>, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> style_prop = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-2f348d.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-2f348d.html
new file mode 100644
index 0000000..048ac2e
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-2f348d.html
@@ -0,0 +1,3591 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-colorsel.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Use of memory after it is freed -->
+
+<!-- BUGTYPE Use-after-free -->
+
+<!-- BUGCATEGORY Memory error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-colorsel.c -->
+
+<!-- FILENAME mate-colorsel.c -->
+
+<!-- FUNCTIONNAME hex_changed -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 2f348d31a96b52eda67f8c564dcc5ccc -->
+
+<!-- BUGLINE 1876 -->
+
+<!-- BUGCOLUMN 20 -->
+
+<!-- BUGPATHLENGTH 13 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-colorsel.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1876, column 20</a><br />Use of memory after it is freed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-colorsel.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-colorsel.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1857": 1, "1858": 1, "1859": 1, "1860": 1, "1861": 1, "1862": 1, "1863": 1, "1864": 1, "1866": 1, "1867": 1, "1869": 1, "1872": 1, "1873": 1, "1875": 1, "1876": 1, "1896": 1, "1897": 1, "1898": 1, "1899": 1, "1900": 1, "1901": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 27,27,24,22,16,13,9,5,4,2,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* GTK - The GIMP Toolkit</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Copyright (C) 2000 Red Hat, Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* This library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* modify it under the terms of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* License as published by the Free Software Foundation; either</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* version 2 of the License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* This library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* Lesser General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* License along with this library; if not, write to the</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* Boston, MA 02111-1307, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>* Modified by the GTK+ Team and others 1997-2001. See the AUTHORS</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>* file for a list of people on the GTK+ Team. See the ChangeLog</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>* files for a list of changes. These files are distributed with</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>* GTK+ at ftp://ftp.gtk.org/pub/gtk/.</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;math.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;gdk/gdkkeysyms.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include "mate-colorsel.h"</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include "mate-hsv.h"</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_COLOR_PALETTE<span class='macro_popup'>"#ef2929:#fcaf3e:#fce94f:#8ae234:#729fcf:#ad7fa8:#e9b96e:#888a85:#eeeeec:#cc0000:#f57900:#edd400:#73d216:#3465a4:#75507b:#c17d11:#555753:#d3d7cf:#a40000:#ce5c00:#c4a000:#4e9a06:#204a87:#5c3566:#8f5902:#2e3436:#babdb6:#000000:#2e3436:#555753:#888a85:#babdb6:#d3d7cf:#eeeeec:#f3f3f3:#ffffff"</span></span> "#ef2929:#fcaf3e:#fce94f:#8ae234:#729fcf:#ad7fa8:#e9b96e:#888a85:#eeeeec:#cc0000:#f57900:#edd400:#73d216:#3465a4:#75507b:#c17d11:#555753:#d3d7cf:#a40000:#ce5c00:#c4a000:#4e9a06:#204a87:#5c3566:#8f5902:#2e3436:#babdb6:#000000:#2e3436:#555753:#888a85:#babdb6:#d3d7cf:#eeeeec:#f3f3f3:#ffffff"</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='comment'>/* Number of elements in the custom palatte */</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span> 9</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span> 4</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#define <span class='macro'>CUSTOM_PALETTE_ENTRY_WIDTH<span class='macro_popup'>20</span></span> 20</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>CUSTOM_PALETTE_ENTRY_HEIGHT<span class='macro_popup'>20</span></span> 20</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='comment'>/* The cursor for the dropper */</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#define <span class='macro'>DROPPER_WIDTH<span class='macro_popup'>16</span></span> 16</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#define <span class='macro'>DROPPER_HEIGHT<span class='macro_popup'>16</span></span> 16</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#define <span class='macro'>DROPPER_STRIDE<span class='macro_popup'>64</span></span> 64</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#define <span class='macro'>DROPPER_X_HOT<span class='macro_popup'>2</span></span> 2</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='directive'>#define <span class='macro'>DROPPER_Y_HOT<span class='macro_popup'>16</span></span> 16</span></td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#define <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span> 16</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#define <span class='macro'>BIG_STEP<span class='macro_popup'>20</span></span> 20</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='comment'>/* Conversion between 0-&gt;1 double and and guint16. See</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> <span class='comment'>* scale_round() below for more general conversions</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='directive'>#define <span class='macro'>SCALE(i)<span class='macro_popup'>(i / 65535.)</span></span> (i / 65535.)</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='directive'>#define <span class='macro'>UNSCALE(d)<span class='macro_popup'>((guint16)(d * 65535 + 0.5))</span></span> ((guint16)(d * 65535 + 0.5))</span></td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"><span class='directive'>#define <span class='macro'>INTENSITY(r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> COLOR_CHANGED,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> LAST_SIGNAL</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> PROP_HAS_PALETTE,</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> PROP_HAS_OPACITY_CONTROL,</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> PROP_CURRENT_RGBA,</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> PROP_CURRENT_ALPHA,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> PROP_HEX_STRING</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> COLORSEL_RED = 0,</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> COLORSEL_GREEN = 1,</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> COLORSEL_BLUE = 2,</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> COLORSEL_OPACITY = 3,</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> COLORSEL_HUE,</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> COLORSEL_SATURATION,</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> COLORSEL_VALUE,</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> COLORSEL_NUM_CHANNELS</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"><span class='keyword'>struct</span> _MateColorSelectionPrivate</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> guint has_opacity : 1;</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> guint has_palette : 1;</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> guint changing : 1;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> guint default_set : 1;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> guint default_alpha_set : 1;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> guint has_grab : 1;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> gdouble color[COLORSEL_NUM_CHANNELS];</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> gdouble old_color[COLORSEL_NUM_CHANNELS];</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> GtkWidget *triangle_colorsel;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> GtkWidget *hue_spinbutton;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> GtkWidget *sat_spinbutton;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> GtkWidget *val_spinbutton;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> GtkWidget *red_spinbutton;</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> GtkWidget *green_spinbutton;</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> GtkWidget *blue_spinbutton;</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> GtkWidget *opacity_slider;</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> GtkWidget *opacity_label;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GtkWidget *opacity_entry;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GtkWidget *palette_frame;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> GtkWidget *hex_entry;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='comment'>/* The Palette code */</span></td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> GtkWidget *custom_palette [<span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span>][<span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='comment'>/* The color_sample stuff */</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> GtkWidget *sample_area;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> GtkWidget *old_sample;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> GtkWidget *cur_sample;</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> GtkWidget *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='comment'>/* Window for grabbing on */</span></td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> GtkWidget *dropper_grab_widget;</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> guint32 grab_time;</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='comment'>/* Connection to settings */</span></td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> gulong settings_connection;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_dispose (GObject *object);</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_finalize (GObject *object);</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> update_color (MateColorSelection *colorsel);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> GParamSpec *pspec);</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> GParamSpec *pspec);</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_realize (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_unrealize (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_show_all (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"><span class='keyword'>static</span> gboolean mate_color_selection_grab_broken (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> GdkEventGrabBroken *event);</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_color_selection_set_palette_color (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> gint index,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> GdkRGBA *color);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> default_noscreen_change_palette_func (<span class='keyword'>const</span> GdkRGBA *colors,</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> gint n_colors);</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> default_change_palette_func (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> <span class='keyword'>const</span> GdkRGBA *colors,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> gint n_colors);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> make_control_relations (AtkObject *atk_obj,</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> make_all_relations (AtkObject *atk_obj,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> MateColorSelectionPrivate *priv);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> hsv_changed (GtkWidget *hsv,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> get_screen_color (GtkWidget *button);</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> adjustment_changed (GtkAdjustment *adjustment,</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> opacity_entry_changed (GtkWidget *opacity_entry,</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> hex_changed (GtkWidget *hex_entry,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='keyword'>static</span> gboolean hex_focus_out (GtkWidget *hex_entry,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GdkEventFocus *event,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> color_sample_new (MateColorSelection *colorsel);</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> make_label_spinbutton (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> GtkWidget **spinbutton,</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> gchar *text,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> GtkWidget *grid,</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> gint i,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> gint j,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> gint channel_type,</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>const</span> gchar *tooltip);</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> make_palette_frame (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> GtkWidget *grid,</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> gint i,</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> gint j);</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_selected_palette (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='keyword'>int</span> x,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>int</span> y);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_focus_line_attributes (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> gint *focus_width);</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"><span class='keyword'>static</span> gboolean mouse_press (GtkWidget *invisible,</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> GdkEventButton *event,</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> palette_change_notify_instance (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> update_palette (MateColorSelection *colorsel);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> shutdown_eyedropper (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"><span class='keyword'>static</span> guint color_selection_signals[LAST_SIGNAL] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"><span class='keyword'>static</span> MateColorSelectionChangePaletteFunc noscreen_change_palette_hook = default_noscreen_change_palette_func;</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"><span class='keyword'>static</span> MateColorSelectionChangePaletteWithScreenFunc change_palette_hook = default_change_palette_func;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> guchar dropper_bits[] = {</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"><span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='string_literal'>"\0U\35\35\35\373\40\40\40\350\0\0\0"</span><span class='string_literal'>"6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\"\0\0\0\265"</span></td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> <span class='string_literal'>"\0\0\0\373\233\233\233\377\233\233\233\377\0\0\0\351\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='string_literal'>"\0y\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='string_literal'>"\0U555\374\0\0\0\377\0\0\0\377\0\0\0\366\0\0\0t\0\0\0\15\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=EEE\377\362"</span></td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> <span class='string_literal'>"\362\362\377HHH\377\0\0\0\377\0\0\0\332\0\0\0.\0\0\0\6\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=ddd\370\352\352\352"</span></td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='string_literal'>"\377xxx\377\5\5\5\305\0\0\0\256\0\0\0q\0\0\0\15\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=EEE\377\353\353\353\377\206"</span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> <span class='string_literal'>"\206\206\377\2\2\2\311\1\1\1=\0\0\0@\0\0\0-\0\0\0\4\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=ddd\370\354\354\354\377xxx\377\2"</span></td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='string_literal'>"\2\2\311\0\0\0\77\0\0\0\21\0\0\0\14\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&lt;EEE\377\354\354\354\377\206\206\206\377"</span></td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='string_literal'>"\2\2\2\311\2\2\2"</span><span class='string_literal'>"6\0\0\0\20\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\316\374\374\374\377yyy\377\2\2"</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='string_literal'>"\2\311\0\0\0\77\0\0\0\20\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32)))\351111\362\0\0\0\306\2\2\2"</span><span class='string_literal'>"6"</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> <span class='string_literal'>"\0\0\0\20\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\21\0\0\0j\0\0\0g\0\0\0&lt;\0\0\0\20\0\0\0\1\0"</span></td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\11\0\0\0(\0\0\0\40\0\0\0\14\0\0\0\1\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\3\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> <span class='string_literal'>"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"</span>};</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"><span class='macro'>G_DEFINE_TYPE_WITH_PRIVATE (MateColorSelection, mate_color_selection, GTK_TYPE_BOX)<span class='macro_popup'>static void mate_color_selection_init (MateColorSelection *self<br>); static void mate_color_selection_class_init (MateColorSelectionClass<br> *klass); static GType mate_color_selection_get_type_once (void<br>); static gpointer mate_color_selection_parent_class = ((void<br>*)0); static gint MateColorSelection_private_offset; static void<br> mate_color_selection_class_intern_init (gpointer klass) { mate_color_selection_parent_class<br> = g_type_class_peek_parent (klass); if (MateColorSelection_private_offset<br> != 0) g_type_class_adjust_private_offset (klass, &amp;MateColorSelection_private_offset<br>); mate_color_selection_class_init ((MateColorSelectionClass*<br>) klass); } __attribute__ ((__unused__)) static inline gpointer<br> mate_color_selection_get_instance_private (MateColorSelection<br> *self) { return (((gpointer) ((guint8*) (self) + (glong) (MateColorSelection_private_offset<br>)))); } GType mate_color_selection_get_type (void) { static gsize<br> static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert<br> (sizeof *(&amp;static_g_define_type_id) == sizeof (gpointer)<br>, "Expression evaluates to false"); (void) (0 ? (gpointer) *(<br>&amp;static_g_define_type_id) : ((void*)0)); (!(__extension__<br> ({ _Static_assert (sizeof *(&amp;static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = mate_color_selection_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType mate_color_selection_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((gtk_box_get_type ()), g_intern_static_string ("MateColorSelection"<br>), sizeof (MateColorSelectionClass), (GClassInitFunc)(void (*<br>)(void)) mate_color_selection_class_intern_init, sizeof (MateColorSelection<br>), (GInstanceInitFunc)(void (*)(void)) mate_color_selection_init<br>, (GTypeFlags) 0); { {{ MateColorSelection_private_offset = g_type_add_instance_private<br> (g_define_type_id, sizeof (MateColorSelectionPrivate)); };} }<br> return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line">mate_color_selection_class_init (MateColorSelectionClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> GObjectClass *gobject_class;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> GtkWidgetClass *widget_class;</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> gobject_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((klass)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> gobject_class-&gt;finalize = mate_color_selection_finalize;</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> gobject_class-&gt;set_property = mate_color_selection_set_property;</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> gobject_class-&gt;get_property = mate_color_selection_get_property;</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> gobject_class-&gt;dispose = mate_color_selection_dispose;</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> widget_class = <span class='macro'>GTK_WIDGET_CLASS (klass)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((klass)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> widget_class-&gt;realize = mate_color_selection_realize;</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> widget_class-&gt;unrealize = mate_color_selection_unrealize;</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> widget_class-&gt;show_all = mate_color_selection_show_all;</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> widget_class-&gt;grab_broken_event = mate_color_selection_grab_broken;</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> g_object_class_install_property (gobject_class,</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> PROP_HAS_OPACITY_CONTROL,</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> g_param_spec_boolean (<span class='string_literal'>"has-opacity-control"</span>,</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Has Opacity Control"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Has Opacity Control"))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Whether the color selector should allow setting opacity"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Whether the color selector should allow setting opacity"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> G_PARAM_READWRITE));</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> g_object_class_install_property (gobject_class,</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> PROP_HAS_PALETTE,</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> g_param_spec_boolean (<span class='string_literal'>"has-palette"</span>,</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Has palette"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Has palette"))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Whether a palette should be used"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Whether a palette should be used"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> G_PARAM_READWRITE));</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_class_install_property (gobject_class,</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> PROP_CURRENT_RGBA,</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> g_param_spec_boxed (<span class='string_literal'>"current-rgba"</span>,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Current RGBA"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Current RGBA"))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The current RGBA color"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The current RGBA color"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='macro'>GDK_TYPE_RGBA<span class='macro_popup'>(gdk_rgba_get_type ())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> G_PARAM_READWRITE|</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> G_PARAM_STATIC_NAME|</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> G_PARAM_STATIC_NICK|</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> G_PARAM_STATIC_BLURB));</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_object_class_install_property (gobject_class,</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> PROP_CURRENT_ALPHA,</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> g_param_spec_uint (<span class='string_literal'>"current-alpha"</span>,</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Current Alpha"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Current Alpha"))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The current opacity value (0 fully transparent, 65535 fully opaque)"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The current opacity value (0 fully transparent, 65535 fully opaque)"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> 0, 65535, 65535,</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> G_PARAM_READWRITE));</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> g_object_class_install_property (gobject_class,</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> PROP_HEX_STRING,</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> g_param_spec_string (<span class='string_literal'>"hex-string"</span>,</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"HEX String"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "HEX String"))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The hexadecimal string of current color"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The hexadecimal string of current color"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> color_selection_signals[COLOR_CHANGED] =</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> g_signal_new (<span class='string_literal'>"color-changed"</span>,</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (gobject_class)<span class='macro_popup'>((((GTypeClass*) (gobject_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (MateColorSelectionClass, color_changed)<span class='macro_popup'>((glong) __builtin_offsetof(MateColorSelectionClass, color_changed<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> g_cclosure_marshal_VOID__VOID,</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line">mate_color_selection_init (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> GtkWidget *top_hbox;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> GtkWidget *top_right_vbox;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> GtkWidget *grid, *label, *hbox, *frame, *vbox, *button;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> GtkAdjustment *adjust;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> GtkWidget *picker_image;</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> gint i, j;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> AtkObject *atk_obj;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> GList *focus_chain = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> priv = colorsel-&gt;private_data = mate_color_selection_get_instance_private (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> priv-&gt;changing = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> priv-&gt;default_set = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> priv-&gt;default_alpha_set = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> top_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (colorsel)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), ((gtk_box_get_type ()))))))</span></span>, top_hbox, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> priv-&gt;triangle_colorsel = mate_hsv_new ();</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;triangle_colorsel, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;triangle_colorsel), ("changed"<br>), (((GCallback) (hsv_changed))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> <span class='macro'>G_CALLBACK (hsv_changed), colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;triangle_colorsel), ("changed"<br>), (((GCallback) (hsv_changed))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> mate_hsv_set_metrics (<span class='macro'>MATE_HSV (priv-&gt;triangle_colorsel)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;triangle_colorsel)), ((mate_hsv_get_type ()))))<br>))</span></span>, 174, 15);</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (top_hbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((top_hbox)), ((gtk_box_get_type ()))))))</span></span>, vbox, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (vbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((vbox)), ((gtk_box_get_type ()))))))</span></span>, priv-&gt;triangle_colorsel, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;triangle_colorsel,</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Select the color you want from the outer ring. Select the darkness or lightness of that color using the inner triangle."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Select the color you want from the outer ring. Select the darkness or lightness of that color using the inner triangle."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (vbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((vbox)), ((gtk_box_get_type ()))))))</span></span>, hbox, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> frame = gtk_frame_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> gtk_widget_set_size_request (frame, -1, 30);</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> gtk_frame_set_shadow_type (<span class='macro'>GTK_FRAME (frame)<span class='macro_popup'>((((GtkFrame*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((frame)), ((gtk_frame_get_type ()))))))</span></span>, GTK_SHADOW_IN);</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> color_sample_new (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (frame)<span class='macro_popup'>((((GtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((frame)), ((gtk_container_get_type ()))))))</span></span>, priv-&gt;sample_area);</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (hbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hbox)), ((gtk_box_get_type ()))))))</span></span>, frame, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> button = gtk_button_new ();</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> gtk_widget_set_events (button, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (button)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((button)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"COLORSEL"</span>, colorsel);</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='macro'>g_signal_connect (button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((button), ("clicked"), (((GCallback) (<br>get_screen_color))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='macro'>G_CALLBACK (get_screen_color), NULL)<span class='macro_popup'>g_signal_connect_data ((button), ("clicked"), (((GCallback) (<br>get_screen_color))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> picker_image = gtk_image_new_from_icon_name (<span class='string_literal'>"gtk-color-picker"</span>, GTK_ICON_SIZE_BUTTON);</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (button)<span class='macro_popup'>((((GtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((button)), ((gtk_container_get_type ()))))))</span></span>, picker_image);</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (picker_image)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((picker_image)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (hbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hbox)), ((gtk_box_get_type ()))))))</span></span>, button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> gtk_widget_set_tooltip_text (button,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Click the eyedropper, then click a color anywhere on your screen to select that color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Click the eyedropper, then click a color anywhere on your screen to select that color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> top_right_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (top_hbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((top_hbox)), ((gtk_box_get_type ()))))))</span></span>, top_right_vbox, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> grid = gtk_grid_new ();</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (top_right_vbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((top_right_vbox)), ((gtk_box_get_type ()))))))</span></span>, grid, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> gtk_grid_set_row_spacing (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, 6);</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> gtk_grid_set_column_spacing (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, 12);</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> make_label_spinbutton (colorsel, &amp;priv-&gt;hue_spinbutton, <span class='macro'>_(<span class='string_literal'>"_Hue:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Hue:"))</span></span>, grid, 0, 0, COLORSEL_HUE,</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Position on the color wheel."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Position on the color wheel."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> gtk_spin_button_set_wrap (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;hue_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;hue_spinbutton)), ((gtk_spin_button_get_type ()<br>))))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> make_label_spinbutton (colorsel, &amp;priv-&gt;sat_spinbutton, <span class='macro'>_(<span class='string_literal'>"_Saturation:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Saturation:"))</span></span>, grid, 0, 1, COLORSEL_SATURATION,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\"Deepness\" of the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "\"Deepness\" of the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> make_label_spinbutton (colorsel, &amp;priv-&gt;val_spinbutton, <span class='macro'>_(<span class='string_literal'>"_Value:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Value:"))</span></span>, grid, 0, 2, COLORSEL_VALUE,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Brightness of the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Brightness of the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> make_label_spinbutton (colorsel, &amp;priv-&gt;red_spinbutton, <span class='macro'>_(<span class='string_literal'>"_Red:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Red:"))</span></span>, grid, 6, 0, COLORSEL_RED,</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Amount of red light in the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Amount of red light in the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> make_label_spinbutton (colorsel, &amp;priv-&gt;green_spinbutton, <span class='macro'>_(<span class='string_literal'>"_Green:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Green:"))</span></span>, grid, 6, 1, COLORSEL_GREEN,</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Amount of green light in the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Amount of green light in the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> make_label_spinbutton (colorsel, &amp;priv-&gt;blue_spinbutton, <span class='macro'>_(<span class='string_literal'>"_Blue:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Blue:"))</span></span>, grid, 6, 2, COLORSEL_BLUE,</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Amount of blue light in the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Amount of blue light in the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), 0, 3, 8, 1);</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> priv-&gt;opacity_label = gtk_label_new_with_mnemonic (<span class='macro'>_(<span class='string_literal'>"Op_acity:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Op_acity:"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> gtk_label_set_xalign (<span class='macro'>GTK_LABEL (priv-&gt;opacity_label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_label)), ((gtk_label_get_type ()))))))</span></span>, 0.0);</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, priv-&gt;opacity_label, 0, 4, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> adjust = <span class='macro'>GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 1.0, 0.0))<span class='macro_popup'>((((GtkAdjustment*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 1.0, 0.0))), (<br>(gtk_adjustment_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (adjust)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((adjust)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"COLORSEL"</span>, colorsel);</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> priv-&gt;opacity_slider = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, adjust);</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;opacity_slider,</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Transparency of the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Transparency of the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> gtk_label_set_mnemonic_widget (<span class='macro'>GTK_LABEL (priv-&gt;opacity_label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_label)), ((gtk_label_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> priv-&gt;opacity_slider);</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> gtk_scale_set_draw_value (<span class='macro'>GTK_SCALE (priv-&gt;opacity_slider)<span class='macro_popup'>((((GtkScale*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_slider)), ((gtk_scale_get_type ()))))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='macro'>g_signal_connect (adjust, <span class='string_literal'>"value-changed"</span>,<span class='macro_popup'>g_signal_connect_data ((adjust), ("value-changed"), (((GCallback<br>) (adjustment_changed))), (((gpointer) (glong) (COLORSEL_OPACITY<br>))), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span class='macro'>G_CALLBACK (adjustment_changed),<span class='macro_popup'>g_signal_connect_data ((adjust), ("value-changed"), (((GCallback<br>) (adjustment_changed))), (((gpointer) (glong) (COLORSEL_OPACITY<br>))), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='macro'>GINT_TO_POINTER (COLORSEL_OPACITY))<span class='macro_popup'>g_signal_connect_data ((adjust), ("value-changed"), (((GCallback<br>) (adjustment_changed))), (((gpointer) (glong) (COLORSEL_OPACITY<br>))), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, priv-&gt;opacity_slider, 1, 4, 6, 1);</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> priv-&gt;opacity_entry = gtk_entry_new ();</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;opacity_entry,</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Transparency of the color."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Transparency of the color."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> gtk_widget_set_size_request (priv-&gt;opacity_entry, 40, -1);</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;opacity_entry, <span class='string_literal'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;opacity_entry), ("activate")<br>, (((GCallback) (opacity_entry_changed))), (colorsel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> <span class='macro'>G_CALLBACK (opacity_entry_changed), colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;opacity_entry), ("activate")<br>, (((GCallback) (opacity_entry_changed))), (colorsel), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, priv-&gt;opacity_entry, 7, 4, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> label = gtk_label_new_with_mnemonic (<span class='macro'>_(<span class='string_literal'>"Color _name:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Color _name:"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, label, 0, 5, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> gtk_label_set_xalign (<span class='macro'>GTK_LABEL (label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((label)), ((gtk_label_get_type ()))))))</span></span>, 0.0);</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> priv-&gt;hex_entry = gtk_entry_new ();</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> gtk_label_set_mnemonic_widget (<span class='macro'>GTK_LABEL (label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((label)), ((gtk_label_get_type ()))))))</span></span>, priv-&gt;hex_entry);</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;hex_entry, <span class='string_literal'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;hex_entry), ("activate"), ((<br>(GCallback) (hex_changed))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> <span class='macro'>G_CALLBACK (hex_changed), colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;hex_entry), ("activate"), ((<br>(GCallback) (hex_changed))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;hex_entry, <span class='string_literal'>"focus-out-event"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;hex_entry), ("focus-out-event"<br>), (((GCallback) (hex_focus_out))), (colorsel), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> <span class='macro'>G_CALLBACK (hex_focus_out), colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;hex_entry), ("focus-out-event"<br>), (((GCallback) (hex_focus_out))), (colorsel), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;hex_entry,</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"You can enter an HTML-style hexadecimal color value, or simply a color name such as 'orange' in this entry."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "You can enter an HTML-style hexadecimal color value, or simply a color name such as 'orange' in this entry."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> gtk_entry_set_width_chars (<span class='macro'>GTK_ENTRY (priv-&gt;hex_entry)<span class='macro_popup'>((((GtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;hex_entry)), ((gtk_entry_get_type ()))))))</span></span>, 7);</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, priv-&gt;hex_entry, 1, 5, 4, 1);</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;hue_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;sat_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;val_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;red_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;green_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;blue_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;opacity_slider);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;opacity_entry);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> focus_chain = g_list_append (focus_chain, priv-&gt;hex_entry);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> gtk_container_set_focus_chain (<span class='macro'>GTK_CONTAINER (grid)<span class='macro_popup'>((((GtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_container_get_type ()))))))</span></span>, focus_chain);</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> g_list_free (focus_chain);</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> <span class='comment'>/* Set up the palette */</span></td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> grid = gtk_grid_new ();</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> gtk_grid_set_row_spacing (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, 1);</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> gtk_grid_set_column_spacing (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, 1);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span>; i++)</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (j = 0; j &lt; <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>; j++)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> make_palette_frame (colorsel, grid, i, j);</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> set_selected_palette (colorsel, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> priv-&gt;palette_frame = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> label = gtk_label_new_with_mnemonic (<span class='macro'>_(<span class='string_literal'>"_Palette:"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Palette:"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> gtk_label_set_xalign (<span class='macro'>GTK_LABEL (label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((label)), ((gtk_label_get_type ()))))))</span></span>, 0.0);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (priv-&gt;palette_frame)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;palette_frame)), ((gtk_box_get_type ()))))))</span></span>, label, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> gtk_label_set_mnemonic_widget (<span class='macro'>GTK_LABEL (label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((label)), ((gtk_label_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> priv-&gt;custom_palette[0][0]);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (top_right_vbox)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((top_right_vbox)), ((gtk_box_get_type ()))))))</span></span>, priv-&gt;palette_frame, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (priv-&gt;palette_frame)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;palette_frame)), ((gtk_box_get_type ()))))))</span></span>, grid, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> gtk_widget_show_all (top_hbox);</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> <span class='comment'>/* hide unused stuff */</span></td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_opacity == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> gtk_widget_hide (priv-&gt;opacity_label);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> gtk_widget_hide (priv-&gt;opacity_slider);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> gtk_widget_hide (priv-&gt;opacity_entry);</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_palette == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> gtk_widget_hide (priv-&gt;palette_frame);</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> atk_obj = gtk_widget_get_accessible (priv-&gt;triangle_colorsel);</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_ACCESSIBLE (atk_obj)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(atk_obj)); GType __t = ((gtk_accessible_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> atk_object_set_name (atk_obj, <span class='macro'>_(<span class='string_literal'>"Color Wheel"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Color Wheel"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> atk_object_set_role (gtk_widget_get_accessible (<span class='macro'>GTK_WIDGET (colorsel)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), ((gtk_widget_get_type ()))))))</span></span>), ATK_ROLE_COLOR_CHOOSER);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> make_all_relations (atk_obj, priv);</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"><span class='comment'>/* GObject methods */</span></td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line">mate_color_selection_finalize (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (mate_color_selection_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_color_selection_parent_class)), (((GType) ((20) &lt;&lt;<br> (2))))))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line">mate_color_selection_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (object)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((object)), ((mate_color_selection_get_type (<br>)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>case</span> PROP_HAS_OPACITY_CONTROL:</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> mate_color_selection_set_has_opacity_control (colorsel,</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> g_value_get_boolean (value));</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>case</span> PROP_HAS_PALETTE:</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> mate_color_selection_set_has_palette (colorsel,</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> g_value_get_boolean (value));</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='keyword'>case</span> PROP_CURRENT_RGBA:</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> mate_color_selection_set_current_rgba (colorsel, g_value_get_boxed (value));</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='keyword'>case</span> PROP_CURRENT_ALPHA:</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> mate_color_selection_set_current_alpha (colorsel, g_value_get_uint (value));</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "mate-colorsel.c", 528, ("property"), _glib__property_id, _glib__pspec<br>-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance*) (<br>_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name (((<br>(((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line">mate_color_selection_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> GdkRGBA rgba;</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (object)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((object)), ((mate_color_selection_get_type (<br>)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='keyword'>case</span> PROP_HAS_OPACITY_CONTROL:</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> g_value_set_boolean (value, mate_color_selection_get_has_opacity_control (colorsel));</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>case</span> PROP_HAS_PALETTE:</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> g_value_set_boolean (value, mate_color_selection_get_has_palette (colorsel));</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='keyword'>case</span> PROP_CURRENT_RGBA:</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> mate_color_selection_get_current_rgba (colorsel, &amp;rgba);</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> g_value_set_boxed (value, &amp;rgba);</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> <span class='keyword'>case</span> PROP_CURRENT_ALPHA:</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> g_value_set_uint (value, mate_color_selection_get_current_alpha (colorsel));</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='keyword'>case</span> PROP_HEX_STRING:</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> g_value_set_string (value, gtk_editable_get_chars (<span class='macro'>GTK_EDITABLE (priv-&gt;hex_entry)<span class='macro_popup'>((((GtkEditable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;hex_entry)), ((gtk_editable_get_type ()))))))</span></span>, 0, -1));</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "mate-colorsel.c", 563, ("property"), _glib__property_id, _glib__pspec<br>-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance*) (<br>_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name (((<br>(((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line">mate_color_selection_dispose (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> MateColorSelection *cselection = <span class='macro'>MATE_COLOR_SELECTION (object)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((object)), ((mate_color_selection_get_type (<br>)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> MateColorSelectionPrivate *priv = cselection-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;dropper_grab_widget)</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> gtk_widget_destroy (priv-&gt;dropper_grab_widget);</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> priv-&gt;dropper_grab_widget = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (mate_color_selection_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_color_selection_parent_class)), (((GType) ((20) &lt;&lt;<br> (2))))))))</span></span>-&gt;dispose (object);</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"><span class='comment'>/* GtkWidget methods */</span></td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line">mate_color_selection_realize (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (widget)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((widget)), ((mate_color_selection_get_type (<br>)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> GtkSettings *settings = gtk_widget_get_settings (widget);</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> priv-&gt;settings_connection = <span class='macro'>g_signal_connect (settings,<span class='macro_popup'>g_signal_connect_data ((settings), ("notify::gtk-color-palette"<br>), (((GCallback) (palette_change_notify_instance))), (widget)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::gtk-color-palette"</span>,<span class='macro_popup'>g_signal_connect_data ((settings), ("notify::gtk-color-palette"<br>), (((GCallback) (palette_change_notify_instance))), (widget)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> <span class='macro'>G_CALLBACK (palette_change_notify_instance),<span class='macro_popup'>g_signal_connect_data ((settings), ("notify::gtk-color-palette"<br>), (((GCallback) (palette_change_notify_instance))), (widget)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='macro'>widget)<span class='macro_popup'>g_signal_connect_data ((settings), ("notify::gtk-color-palette"<br>), (((GCallback) (palette_change_notify_instance))), (widget)<br>, ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> update_palette (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (mate_color_selection_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_color_selection_parent_class)), ((gtk_widget_get_type<br> ()))))))</span></span>-&gt;realize (widget);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line">mate_color_selection_unrealize (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (widget)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((widget)), ((mate_color_selection_get_type (<br>)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> GtkSettings *settings = gtk_widget_get_settings (widget);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_signal_handler_disconnect (settings, priv-&gt;settings_connection);</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (mate_color_selection_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_color_selection_parent_class)), ((gtk_widget_get_type<br> ()))))))</span></span>-&gt;unrealize (widget);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"><span class='comment'>/* We override show-all since we have internal widgets that</span></td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> <span class='comment'>* shouldn't be shown when you call show_all(), like the</span></td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> <span class='comment'>* palette and opacity sliders.</span></td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line">mate_color_selection_show_all (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gtk_widget_show (widget);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line">mate_color_selection_grab_broken (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> GdkEventGrabBroken *event)</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> shutdown_eyedropper (widget);</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> <span class='comment'>* The Sample Color</span></td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> color_sample_draw_sample (MateColorSelection *colorsel, cairo_t *cr, <span class='keyword'>int</span> which);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> color_sample_update_samples (MateColorSelection *colorsel);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line">set_color_internal (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> gdouble *color)</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> priv-&gt;changing = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> priv-&gt;color[COLORSEL_RED] = color[0];</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> priv-&gt;color[COLORSEL_GREEN] = color[1];</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> priv-&gt;color[COLORSEL_BLUE] = color[2];</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> priv-&gt;color[COLORSEL_OPACITY] = color[3];</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> gtk_rgb_to_hsv (priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> priv-&gt;color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> &amp;priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> &amp;priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> &amp;priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;default_set == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; COLORSEL_NUM_CHANNELS; i++)</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> priv-&gt;old_color[i] = priv-&gt;color[i];</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> priv-&gt;default_set = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> priv-&gt;default_alpha_set = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line">set_color_icon (GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> gdouble *colors)</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> guint32 pixel;</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> 8, 48, 32);</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> pixel = (((<span class='macro'>UNSCALE (colors[COLORSEL_RED])<span class='macro_popup'>((guint16)(colors[COLORSEL_RED] * 65535 + 0.5))</span></span> &amp; 0xff00) &lt;&lt; 16) |</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> ((<span class='macro'>UNSCALE (colors[COLORSEL_GREEN])<span class='macro_popup'>((guint16)(colors[COLORSEL_GREEN] * 65535 + 0.5))</span></span> &amp; 0xff00) &lt;&lt; 8) |</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> ((<span class='macro'>UNSCALE (colors[COLORSEL_BLUE])<span class='macro_popup'>((guint16)(colors[COLORSEL_BLUE] * 65535 + 0.5))</span></span> &amp; 0xff00)));</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> gdk_pixbuf_fill (pixbuf, pixel);</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> gtk_drag_set_icon_pixbuf (context, pixbuf, -2, -2);</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line">color_sample_drag_begin (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> MateColorSelection *colorsel = data;</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> gdouble *colsrc;</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='keyword'>if</span> (widget == priv-&gt;old_sample)</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> colsrc = priv-&gt;old_color;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> colsrc = priv-&gt;color;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> set_color_icon (context, colsrc);</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line">color_sample_drag_end (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (widget)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"gtk-color-selection-drag-window"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line">color_sample_drop_handle (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> gint x,</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> gint y,</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> GtkSelectionData *selection_data,</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> guint info,</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> guint time,</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> MateColorSelection *colorsel = data;</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> guint16 *vals;</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> <span class='comment'>/* This is currently a guint16 array of the format:</span></td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='comment'>* R</span></td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='comment'>* G</span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='comment'>* B</span></td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='comment'>* opacity</span></td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='keyword'>if</span> (gtk_selection_data_get_length (selection_data) &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> <span class='comment'>/* We accept drops with the wrong format, since the KDE color</span></td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='comment'>* chooser incorrectly drops application/x-color with format 8.</span></td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>if</span> (gtk_selection_data_get_length (selection_data) != 8)</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> g_warning (<span class='string_literal'>"Received invalid color data\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> vals = (guint16 *) gtk_selection_data_get_data (selection_data);</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (widget == priv-&gt;cur_sample)</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> color[0] = (gdouble)vals[0] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> color[1] = (gdouble)vals[1] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> color[2] = (gdouble)vals[2] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> color[3] = (gdouble)vals[3] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> set_color_internal (colorsel, color);</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line">color_sample_drag_handle (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> GtkSelectionData *selection_data,</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> guint info,</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> guint time,</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> MateColorSelection *colorsel = data;</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> guint16 vals[4];</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> gdouble *colsrc;</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> <span class='keyword'>if</span> (widget == priv-&gt;old_sample)</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> colsrc = priv-&gt;old_color;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> colsrc = priv-&gt;color;</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> vals[0] = colsrc[COLORSEL_RED] * 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> vals[1] = colsrc[COLORSEL_GREEN] * 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> vals[2] = colsrc[COLORSEL_BLUE] * 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> vals[3] = priv-&gt;has_opacity ? colsrc[COLORSEL_OPACITY] * 0xffff : 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> gtk_selection_data_set (selection_data,</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> gdk_atom_intern_static_string (<span class='string_literal'>"application/x-color"</span>),</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> 16, (guchar *)vals, 8);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"><span class='comment'>/* which = 0 means draw old sample, which = 1 means draw new */</span></td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line">color_sample_draw_sample (MateColorSelection *colorsel, cairo_t *cr, <span class='keyword'>int</span> which)</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> GtkWidget *da;</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> gint x, y, wid, heig, goff;</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> GtkAllocation allocation;</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='macro'>g_return_if_fail (colorsel != NULL)<span class='macro_popup'>do { if ((colorsel != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "colorsel != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='macro'>g_return_if_fail (priv-&gt;sample_area != NULL)<span class='macro_popup'>do { if ((priv-&gt;sample_area != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "priv-&gt;sample_area != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='keyword'>if</span> (!gtk_widget_is_drawable (priv-&gt;sample_area))</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> <span class='keyword'>if</span> (which == 0)</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> da = priv-&gt;old_sample;</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> goff = 0;</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> da = priv-&gt;cur_sample;</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> gtk_widget_get_allocation (priv-&gt;old_sample, &amp;allocation);</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> goff = allocation.width % 32;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> gtk_widget_get_allocation (da, &amp;allocation);</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> wid = allocation.width;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> heig = allocation.height;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span class='comment'>/* Below needs tweaking for non-power-of-two */</span></td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_opacity)</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='comment'>/* Draw checks in background */</span></td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> cairo_rectangle (cr, 0, 0, wid, heig);</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> cairo_fill (cr);</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> cairo_set_source_rgb (cr, 0.75, 0.75, 0.75);</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>for</span> (x = goff &amp; -<span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span>; x &lt; goff + wid; x += <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='keyword'>for</span> (y = 0; y &lt; heig; y += <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='keyword'>if</span> ((x / <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span> + y / <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span>) % 2 == 0)</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> cairo_rectangle (cr, x - goff, y, <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span>, <span class='macro'>CHECK_SIZE<span class='macro_popup'>16</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> cairo_fill (cr);</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='keyword'>if</span> (which == 0)</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> cairo_set_source_rgba (cr,</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> priv-&gt;old_color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> priv-&gt;old_color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> priv-&gt;old_color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> priv-&gt;has_opacity ?</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> priv-&gt;old_color[COLORSEL_OPACITY] : 1.0);</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> cairo_set_source_rgba (cr,</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> priv-&gt;color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> priv-&gt;has_opacity ?</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> priv-&gt;color[COLORSEL_OPACITY] : 1.0);</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> cairo_rectangle (cr, 0, 0, wid, heig);</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> cairo_fill (cr);</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line">color_sample_update_samples (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> gtk_widget_queue_draw (priv-&gt;old_sample);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> gtk_widget_queue_draw (priv-&gt;cur_sample);</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line">color_old_sample_draw (GtkWidget *da,</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> color_sample_draw_sample (colorsel, cr, 0);</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">color_cur_sample_draw (GtkWidget *da,</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> color_sample_draw_sample (colorsel, cr, 1);</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line">color_sample_setup_dnd (MateColorSelection *colorsel, GtkWidget *sample)</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='keyword'>static</span> <span class='keyword'>const</span> GtkTargetEntry targets[] = {</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> { .target = <span class='string_literal'>"application/x-color"</span>, .flags = 0, .info = 0 }</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> gtk_drag_source_set (sample,</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> targets, 1,</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> GDK_ACTION_COPY | GDK_ACTION_MOVE);</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='macro'>g_signal_connect (sample, <span class='string_literal'>"drag-begin"</span>,<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-begin"), (((GCallback<br>) (color_sample_drag_begin))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='macro'>G_CALLBACK (color_sample_drag_begin),<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-begin"), (((GCallback<br>) (color_sample_drag_begin))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-begin"), (((GCallback<br>) (color_sample_drag_begin))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> <span class='keyword'>if</span> (sample == priv-&gt;cur_sample)</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> gtk_drag_dest_set (sample,</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> GTK_DEST_DEFAULT_HIGHLIGHT |</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GTK_DEST_DEFAULT_MOTION |</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> GTK_DEST_DEFAULT_DROP,</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> targets, 1,</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> GDK_ACTION_COPY);</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='macro'>g_signal_connect (sample, <span class='string_literal'>"drag-end"</span>,<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-end"), (((GCallback) (<br>color_sample_drag_end))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='macro'>G_CALLBACK (color_sample_drag_end),<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-end"), (((GCallback) (<br>color_sample_drag_end))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-end"), (((GCallback) (<br>color_sample_drag_end))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='macro'>g_signal_connect (sample, <span class='string_literal'>"drag-data-get"</span>,<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-data-get"), (((GCallback<br>) (color_sample_drag_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='macro'>G_CALLBACK (color_sample_drag_handle),<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-data-get"), (((GCallback<br>) (color_sample_drag_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-data-get"), (((GCallback<br>) (color_sample_drag_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> <span class='macro'>g_signal_connect (sample, <span class='string_literal'>"drag-data-received"</span>,<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-data-received"), (((GCallback<br>) (color_sample_drop_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='macro'>G_CALLBACK (color_sample_drop_handle),<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-data-received"), (((GCallback<br>) (color_sample_drop_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((sample), ("drag-data-received"), (((GCallback<br>) (color_sample_drop_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line">update_tooltips (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_palette == <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;old_sample,</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;cur_sample,</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The color you've chosen. You can drag this color to a palette entry to save it for use in the future."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The color you've chosen. You can drag this color to a palette entry to save it for use in the future."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;old_sample,</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The previously-selected color, for comparison to the color you're selecting now."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The previously-selected color, for comparison to the color you're selecting now."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> gtk_widget_set_tooltip_text (priv-&gt;cur_sample,</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The color you've chosen."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "The color you've chosen."<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line">color_sample_new (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> priv-&gt;sample_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> priv-&gt;old_sample = gtk_drawing_area_new ();</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> priv-&gt;cur_sample = gtk_drawing_area_new ();</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (priv-&gt;sample_area)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;sample_area)), ((gtk_box_get_type ()))))))</span></span>, priv-&gt;old_sample,</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (priv-&gt;sample_area)<span class='macro_popup'>((((GtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;sample_area)), ((gtk_box_get_type ()))))))</span></span>, priv-&gt;cur_sample,</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;old_sample, <span class='string_literal'>"draw"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;old_sample), ("draw"), (((GCallback<br>) (color_old_sample_draw))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> <span class='macro'>G_CALLBACK (color_old_sample_draw),<span class='macro_popup'>g_signal_connect_data ((priv-&gt;old_sample), ("draw"), (((GCallback<br>) (color_old_sample_draw))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;old_sample), ("draw"), (((GCallback<br>) (color_old_sample_draw))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;cur_sample, <span class='string_literal'>"draw"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;cur_sample), ("draw"), (((GCallback<br>) (color_cur_sample_draw))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> <span class='macro'>G_CALLBACK (color_cur_sample_draw),<span class='macro_popup'>g_signal_connect_data ((priv-&gt;cur_sample), ("draw"), (((GCallback<br>) (color_cur_sample_draw))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;cur_sample), ("draw"), (((GCallback<br>) (color_cur_sample_draw))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> color_sample_setup_dnd (colorsel, priv-&gt;old_sample);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> color_sample_setup_dnd (colorsel, priv-&gt;cur_sample);</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> update_tooltips (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> gtk_widget_show_all (priv-&gt;sample_area);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> <span class='comment'>* The palette area code</span></td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">palette_get_color (GtkWidget *drawing_area, gdouble *color)</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> gdouble *color_val;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> <span class='macro'>g_return_if_fail (color != NULL)<span class='macro_popup'>do { if ((color != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "color != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> color_val = g_object_get_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_val"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> <span class='keyword'>if</span> (color_val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='comment'>/* Default to white for no good reason */</span></td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> color[0] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> color[1] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> color[2] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> color[3] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> color[0] = color_val[0];</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> color[1] = color_val[1];</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> color[2] = color_val[2];</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> color[3] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line">palette_paint (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> GtkAllocation allocation;</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_window (drawing_area) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> gtk_widget_get_allocation (drawing_area, &amp;allocation);</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> palette_get_color (drawing_area, color);</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> cairo_set_source_rgba (cr, color[0], color[1], color[2], color[3]);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> cairo_rectangle (cr, 0, 0, allocation.width, allocation.height);</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> cairo_fill (cr);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_has_focus (drawing_area))</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> set_focus_line_attributes (drawing_area, cr, &amp;focus_width);</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> cairo_rectangle (cr,</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> focus_width / 2., focus_width / 2.,</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> allocation.width - focus_width,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> allocation.height - focus_width);</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> cairo_stroke (cr);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line">set_focus_line_attributes (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> gint *focus_width)</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> gint8 *dash_list;</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> gtk_widget_style_get (drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, focus_width,</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> <span class='string_literal'>"focus-line-pattern"</span>, (gchar *)&amp;dash_list,</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> palette_get_color (drawing_area, color);</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>INTENSITY (color[0], color[1], color[2])<span class='macro_popup'>((color[0]) * 0.30 + (color[1]) * 0.59 + (color[2]) * 0.11)</span></span> &gt; 0.5)</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> cairo_set_source_rgb (cr, 0., 0., 0.);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> cairo_set_source_rgb (cr, 1., 1., 1.);</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> cairo_set_line_width (cr, *focus_width);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> <span class='keyword'>if</span> (dash_list[0])</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> gint n_dashes = strlen ((gchar *)dash_list);</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> gdouble *dashes = <span class='macro'>g_new (gdouble, n_dashes)<span class='macro_popup'>((gdouble *) g_malloc_n ((n_dashes), sizeof (gdouble)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> gdouble total_length = 0;</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> gdouble dash_offset;</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_dashes; i++)</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> dashes[i] = dash_list[i];</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> total_length += dash_list[i];</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='comment'>/* The dash offset here aligns the pattern to integer pixels</span></td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='comment'>* by starting the dash at the right side of the left border</span></td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>* Negative dash offsets in cairo don't work</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>* (https://bugs.freedesktop.org/show_bug.cgi?id=2729)</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> dash_offset = - *focus_width / 2.;</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>while</span> (dash_offset &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> dash_offset += total_length;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> cairo_set_dash (cr, dashes, n_dashes, dash_offset);</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> g_free (dashes);</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> g_free (dash_list);</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">palette_drag_begin (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gdouble colors[4];</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> palette_get_color (widget, colors);</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> set_color_icon (context, colors);</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line">palette_drag_handle (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> GtkSelectionData *selection_data,</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> guint info,</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> guint time,</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> guint16 vals[4];</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> gdouble colsrc[4];</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> palette_get_color (widget, colsrc);</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> vals[0] = colsrc[COLORSEL_RED] * 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> vals[1] = colsrc[COLORSEL_GREEN] * 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> vals[2] = colsrc[COLORSEL_BLUE] * 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> vals[3] = 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> gtk_selection_data_set (selection_data,</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> gdk_atom_intern_static_string (<span class='string_literal'>"application/x-color"</span>),</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> 16, (guchar *)vals, 8);</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line">palette_drag_end (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (widget)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"gtk-color-selection-drag-window"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"><span class='keyword'>static</span> GdkRGBA *</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line">get_current_colors (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> GdkRGBA *colors = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> gint n_colors = 0;</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> mate_color_selection_palette_from_string (<span class='macro'>DEFAULT_COLOR_PALETTE<span class='macro_popup'>"#ef2929:#fcaf3e:#fce94f:#8ae234:#729fcf:#ad7fa8:#e9b96e:#888a85:#eeeeec:#cc0000:#f57900:#edd400:#73d216:#3465a4:#75507b:#c17d11:#555753:#d3d7cf:#a40000:#ce5c00:#c4a000:#4e9a06:#204a87:#5c3566:#8f5902:#2e3436:#babdb6:#000000:#2e3436:#555753:#888a85:#babdb6:#d3d7cf:#eeeeec:#f3f3f3:#ffffff"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> &amp;colors,</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> &amp;n_colors);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> <span class='comment'>/* make sure that we fill every slot */</span></td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='macro'>g_assert (n_colors == GTK_CUSTOM_PALETTE_WIDTH * GTK_CUSTOM_PALETTE_HEIGHT)<span class='macro_popup'>do { if (n_colors == 9 * 4) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-colorsel.c", 1157, ((const char*) (__func__<br>)), "n_colors == GTK_CUSTOM_PALETTE_WIDTH * GTK_CUSTOM_PALETTE_HEIGHT"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>return</span> colors;</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"><span class='comment'>/* Changes the model color */</span></td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line">palette_change_color (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> gdouble *color)</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> gint x, y;</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> GdkRGBA gdk_color;</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> GdkRGBA *current_colors;</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='macro'>g_return_if_fail (GTK_IS_DRAWING_AREA (drawing_area))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((drawing_area)); GType __t = ((gtk_drawing_area_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "GTK_IS_DRAWING_AREA (drawing_area)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> gdk_color.red = color[0];</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> gdk_color.green = color[1];</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> gdk_color.blue = color[2];</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> x = 0;</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> y = 0; <span class='comment'>/* Quiet GCC */</span></td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='keyword'>while</span> (x &lt; <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> y = 0;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='keyword'>while</span> (y &lt; <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;custom_palette[x][y] == drawing_area)</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> ++y;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> ++x;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='macro'>g_assert (x &lt; GTK_CUSTOM_PALETTE_WIDTH || y &lt; GTK_CUSTOM_PALETTE_HEIGHT)<span class='macro_popup'>do { if (x &lt; 9 || y &lt; 4) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-colorsel.c", 1201, ((const char*) (__func__<br>)), "x &lt; GTK_CUSTOM_PALETTE_WIDTH || y &lt; GTK_CUSTOM_PALETTE_HEIGHT"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> current_colors = get_current_colors (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> current_colors[y * <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span> + x] = gdk_color;</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> screen = gtk_widget_get_screen (<span class='macro'>GTK_WIDGET (colorsel)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> <span class='keyword'>if</span> (change_palette_hook != default_change_palette_func)</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> (* change_palette_hook) (screen, current_colors,</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span> * <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (noscreen_change_palette_hook != default_noscreen_change_palette_func)</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> <span class='keyword'>if</span> (screen != gdk_screen_get_default ())</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> g_warning (<span class='string_literal'>"mate_color_selection_set_change_palette_hook used by widget is not on the default screen."</span>);</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> (* noscreen_change_palette_hook) (current_colors,</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span> * <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> (* change_palette_hook) (screen, current_colors,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span> * <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> g_free (current_colors);</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"><span class='comment'>/* Changes the view color */</span></td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line">palette_set_color (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> gdouble *color)</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> gdouble *new_color = <span class='macro'>g_new (<span class='keyword'>double</span>, 4)<span class='macro_popup'>((double *) g_malloc_n ((4), sizeof (double)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> pointer = g_object_get_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_set"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> <span class='keyword'>if</span> (!pointer || <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> == 0)</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>static</span> <span class='keyword'>const</span> GtkTargetEntry targets[] = {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> { .target = <span class='string_literal'>"application/x-color"</span>, .flags = 0, .info = 0 }</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> gtk_drag_source_set (drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> targets, 1,</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> GDK_ACTION_COPY | GDK_ACTION_MOVE);</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='macro'>g_signal_connect (drawing_area, <span class='string_literal'>"drag-begin"</span>,<span class='macro_popup'>g_signal_connect_data ((drawing_area), ("drag-begin"), (((GCallback<br>) (palette_drag_begin))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='macro'>G_CALLBACK (palette_drag_begin),<span class='macro_popup'>g_signal_connect_data ((drawing_area), ("drag-begin"), (((GCallback<br>) (palette_drag_begin))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((drawing_area), ("drag-begin"), (((GCallback<br>) (palette_drag_begin))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> <span class='macro'>g_signal_connect (drawing_area, <span class='string_literal'>"drag-data-get"</span>,<span class='macro_popup'>g_signal_connect_data ((drawing_area), ("drag-data-get"), (((<br>GCallback) (palette_drag_handle))), (colorsel), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='macro'>G_CALLBACK (palette_drag_handle),<span class='macro_popup'>g_signal_connect_data ((drawing_area), ("drag-data-get"), (((<br>GCallback) (palette_drag_handle))), (colorsel), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> <span class='macro'>colorsel)<span class='macro_popup'>g_signal_connect_data ((drawing_area), ("drag-data-get"), (((<br>GCallback) (palette_drag_handle))), (colorsel), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_set"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='macro'>GINT_TO_POINTER (1)<span class='macro_popup'>((gpointer) (glong) (1))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> new_color[0] = color[0];</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> new_color[1] = color[1];</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> new_color[2] = color[2];</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> new_color[3] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_val"</span>, new_color, (GDestroyNotify)g_free);</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">palette_draw (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_window (drawing_area) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> palette_paint (drawing_area, cr, data);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">save_color_selected (GtkWidget *menuitem,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> MateColorSelection *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> GtkWidget *drawing_area;</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> drawing_area = <span class='macro'>GTK_WIDGET (data)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((data)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> colorsel = <span class='macro'>MATE_COLOR_SELECTION (g_object_get_data (G_OBJECT (drawing_area),<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((g_object_get_data (((((GObject*) (void *) g_type_check_instance_cast<br> ((GTypeInstance*) ((drawing_area)), (((GType) ((20) &lt;&lt;<br> (2)))))))), "gtk-color-sel"))), ((mate_color_selection_get_type<br> ()))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='string_literal'><span class='macro'>"gtk-color-sel"</span>))<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((g_object_get_data (((((GObject*) (void *) g_type_check_instance_cast<br> ((GTypeInstance*) ((drawing_area)), (((GType) ((20) &lt;&lt;<br> (2)))))))), "gtk-color-sel"))), ((mate_color_selection_get_type<br> ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> palette_change_color (drawing_area, colorsel, priv-&gt;color);</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line">do_popup (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>const</span> GdkEvent *trigger_event)</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> GtkWidget *menu;</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> GtkWidget *mi;</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"gtk-color-sel"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "gtk-color-sel"))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> colorsel);</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> menu = gtk_menu_new ();</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> mi = gtk_menu_item_new_with_mnemonic (<span class='macro'>_(<span class='string_literal'>"_Save color here"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "_Save color here"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> <span class='macro'>g_signal_connect (mi, <span class='string_literal'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((mi), ("activate"), (((GCallback) (save_color_selected<br>))), (drawing_area), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> <span class='macro'>G_CALLBACK (save_color_selected),<span class='macro_popup'>g_signal_connect_data ((mi), ("activate"), (((GCallback) (save_color_selected<br>))), (drawing_area), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='macro'>drawing_area)<span class='macro_popup'>g_signal_connect_data ((mi), ("activate"), (((GCallback) (save_color_selected<br>))), (drawing_area), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> gtk_menu_shell_append (<span class='macro'>GTK_MENU_SHELL (menu)<span class='macro_popup'>((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((menu)), ((gtk_menu_shell_get_type ()))))))</span></span>, mi);</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> gtk_widget_show_all (mi);</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='keyword'>if</span> (trigger_event &amp;&amp; gdk_event_triggers_context_menu (trigger_event))</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> gtk_menu_popup_at_pointer (<span class='macro'>GTK_MENU (menu)<span class='macro_popup'>((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((menu)), ((gtk_menu_get_type ()))))))</span></span>, trigger_event);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='comment'>/* We use the drawing area's parent to anchor the menu because of GTK bug</span></td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> <span class='comment'>* https://gitlab.gnome.org/GNOME/gtk/-/issues/6166 that leads to</span></td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='comment'>* misplacement of the popup if the anchor widget has its own window.</span></td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> <span class='comment'>* The drawing area ought to have its own window though, as it is mandatory</span></td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> <span class='comment'>* for setting it up as a drag source.</span></td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> <span class='comment'>* Using the parent is OK in our case because the drawing area's parent is</span></td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> <span class='comment'>* a frame that has it as its only child, and thus size and placement is</span></td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='comment'>* appropriate for placing the menu. */</span></td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> gtk_menu_popup_at_widget (<span class='macro'>GTK_MENU (menu)<span class='macro_popup'>((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((menu)), ((gtk_menu_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> gtk_widget_get_parent (drawing_area),</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> GDK_GRAVITY_CENTER,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> GDK_GRAVITY_NORTH_WEST,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> trigger_event);</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line">palette_enter (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> GdkEventCrossing *event,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='string_literal'>"gtk-colorsel-have-pointer"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> <span class='macro'>GUINT_TO_POINTER (TRUE)<span class='macro_popup'>((gpointer) (gulong) ((!(0))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line">palette_leave (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> GdkEventCrossing *event,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> <span class='string_literal'>"gtk-colorsel-have-pointer"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"><span class='comment'>/* private function copied from gtk2/gtkmain.c */</span></td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line">_gtk_button_event_triggers_context_menu (GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> <span class='keyword'>if</span> (event-&gt;type == GDK_BUTTON_PRESS)</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button == 3 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> ! (event-&gt;state &amp; (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK)))</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"><span class='directive'>#ifdef GDK_WINDOWING_QUARTZ</span></td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button == 1 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> ! (event-&gt;state &amp; (GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> (event-&gt;state &amp; GDK_CONTROL_MASK))</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line">palette_press (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> GdkEventButton *event,</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> gtk_widget_grab_focus (drawing_area);</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='keyword'>if</span> (_gtk_button_event_triggers_context_menu (event))</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> do_popup (colorsel, drawing_area, (GdkEvent *) event);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line">palette_release (GtkWidget *drawing_area,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> GdkEventButton *event,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> gtk_widget_grab_focus (drawing_area);</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button == 1 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> g_object_get_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='string_literal'>"gtk-colorsel-have-pointer"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> gpointer pointer = g_object_get_data (<span class='macro'>G_OBJECT (drawing_area)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((drawing_area)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_set"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> <span class='keyword'>if</span> (pointer &amp;&amp; <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> != 0)</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> palette_get_color (drawing_area, color);</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> set_color_internal (colorsel, color);</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line">palette_drop_handle (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> gint x,</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> gint y,</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> GtkSelectionData *selection_data,</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> guint info,</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> guint time,</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> guint16 *vals;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> <span class='keyword'>if</span> (gtk_selection_data_get_length (selection_data) &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> <span class='comment'>/* We accept drops with the wrong format, since the KDE color</span></td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='comment'>* chooser incorrectly drops application/x-color with format 8.</span></td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> <span class='keyword'>if</span> (gtk_selection_data_get_length (selection_data) != 8)</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> g_warning (<span class='string_literal'>"Received invalid color data\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> vals = (guint16 *) gtk_selection_data_get_data (selection_data);</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> color[0] = (gdouble)vals[0] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> color[1] = (gdouble)vals[1] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> color[2] = (gdouble)vals[2] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> color[3] = (gdouble)vals[3] / 0xffff;</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> palette_change_color (widget, colorsel, color);</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> set_color_internal (colorsel, color);</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line">palette_activate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"> GdkEventKey *event,</td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line"> <span class='comment'>/* should have a drawing area subclass with an activate signal */</span></td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;keyval == <span class='macro'>GDK_KEY_space<span class='macro_popup'>0x020</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line"> (event-&gt;keyval == <span class='macro'>GDK_KEY_Return<span class='macro_popup'>0xff0d</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> (event-&gt;keyval == <span class='macro'>GDK_KEY_ISO_Enter<span class='macro_popup'>0xfe34</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> (event-&gt;keyval == <span class='macro'>GDK_KEY_KP_Enter<span class='macro_popup'>0xff8d</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> (event-&gt;keyval == <span class='macro'>GDK_KEY_KP_Space<span class='macro_popup'>0xff80</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> gpointer pointer = g_object_get_data (<span class='macro'>G_OBJECT (widget)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_set"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> <span class='keyword'>if</span> (pointer &amp;&amp; <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> != 0)</td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> palette_get_color (widget, color);</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line"> set_color_internal (<span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>, color);</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line">palette_popup (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> MateColorSelection *colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> do_popup (colorsel, widget, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"><span class='keyword'>static</span> GtkWidget*</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line">palette_new (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>static</span> <span class='keyword'>const</span> GtkTargetEntry targets[] = {</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> { .target = <span class='string_literal'>"application/x-color"</span>, .flags = 0, .info = 0 }</td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> GtkWidget *retval = gtk_drawing_area_new ();</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> gtk_widget_set_can_focus (retval, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (retval)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((retval)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"color_set"</span>, <span class='macro'>GINT_TO_POINTER (0)<span class='macro_popup'>((gpointer) (glong) (0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> gtk_widget_set_events (retval, GDK_BUTTON_PRESS_MASK</td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> | GDK_BUTTON_RELEASE_MASK</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> | GDK_EXPOSURE_MASK</td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> | GDK_ENTER_NOTIFY_MASK</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> | GDK_LEAVE_NOTIFY_MASK);</td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"draw"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("draw"), (((GCallback) (palette_draw<br>))), (colorsel), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> <span class='macro'>G_CALLBACK (palette_draw), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("draw"), (((GCallback) (palette_draw<br>))), (colorsel), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"button-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("button-press-event"), (((GCallback<br>) (palette_press))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> <span class='macro'>G_CALLBACK (palette_press), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("button-press-event"), (((GCallback<br>) (palette_press))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"button-release-event"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("button-release-event"), ((<br>(GCallback) (palette_release))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> <span class='macro'>G_CALLBACK (palette_release), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("button-release-event"), ((<br>(GCallback) (palette_release))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"enter-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("enter-notify-event"), (((GCallback<br>) (palette_enter))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> <span class='macro'>G_CALLBACK (palette_enter), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("enter-notify-event"), (((GCallback<br>) (palette_enter))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"leave-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("leave-notify-event"), (((GCallback<br>) (palette_leave))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> <span class='macro'>G_CALLBACK (palette_leave), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("leave-notify-event"), (((GCallback<br>) (palette_leave))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"key-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("key-press-event"), (((GCallback<br>) (palette_activate))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> <span class='macro'>G_CALLBACK (palette_activate), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("key-press-event"), (((GCallback<br>) (palette_activate))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"popup-menu"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("popup-menu"), (((GCallback<br>) (palette_popup))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='macro'>G_CALLBACK (palette_popup), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("popup-menu"), (((GCallback<br>) (palette_popup))), (colorsel), ((void*)0), (GConnectFlags) 0<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> gtk_drag_dest_set (retval,</td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"> GTK_DEST_DEFAULT_HIGHLIGHT |</td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> GTK_DEST_DEFAULT_MOTION |</td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> GTK_DEST_DEFAULT_DROP,</td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> targets, 1,</td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> GDK_ACTION_COPY);</td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"drag-end"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("drag-end"), (((GCallback) (<br>palette_drag_end))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='macro'>G_CALLBACK (palette_drag_end), NULL)<span class='macro_popup'>g_signal_connect_data ((retval), ("drag-end"), (((GCallback) (<br>palette_drag_end))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='macro'>g_signal_connect (retval, <span class='string_literal'>"drag-data-received"</span>,<span class='macro_popup'>g_signal_connect_data ((retval), ("drag-data-received"), (((GCallback<br>) (palette_drop_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='macro'>G_CALLBACK (palette_drop_handle), colorsel)<span class='macro_popup'>g_signal_connect_data ((retval), ("drag-data-received"), (((GCallback<br>) (palette_drop_handle))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> gtk_widget_set_tooltip_text (retval,</td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Click this palette entry to make it the current color. To change this entry, drag a color swatch here or right-click it and select \"Save color here.\""</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Click this palette entry to make it the current color. To change this entry, drag a color swatch here or right-click it and select \"Save color here.\""<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> <span class='comment'>* The actual MateColorSelection widget</span></td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line"><span class='keyword'>static</span> GdkCursor *</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">make_picker_cursor (GdkScreen *screen)</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> GdkCursor *cursor;</td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> cursor = gdk_cursor_new_from_name (gdk_screen_get_display (screen),</td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='string_literal'>"color-picker"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> <span class='keyword'>if</span> (!cursor)</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> pixbuf = gdk_pixbuf_new_from_data (dropper_bits,</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> GDK_COLORSPACE_RGB, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 8,</td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"> <span class='macro'>DROPPER_WIDTH<span class='macro_popup'>16</span></span>, <span class='macro'>DROPPER_HEIGHT<span class='macro_popup'>16</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> <span class='macro'>DROPPER_STRIDE<span class='macro_popup'>64</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> cursor = gdk_cursor_new_from_pixbuf (gdk_screen_get_display (screen),</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> <span class='macro'>DROPPER_X_HOT<span class='macro_popup'>2</span></span>, <span class='macro'>DROPPER_Y_HOT<span class='macro_popup'>16</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> <span class='keyword'>return</span> cursor;</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line">grab_color_at_mouse (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> GdkDevice *device,</td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> gint x_root,</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> gint y_root,</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> guchar *pixels;</td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"> MateColorSelection *colorsel = data;</td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> GdkWindow *root_window = gdk_screen_get_root_window (screen);</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> pixbuf = gdk_pixbuf_get_from_window (root_window,</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> x_root, y_root,</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>if</span> (!pixbuf)</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> gint x, y;</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> GdkWindow *window = gdk_device_get_window_at_position (device, &amp;x, &amp;y);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> <span class='keyword'>if</span> (!window)</td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> pixbuf = gdk_pixbuf_get_from_window (window,</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> x, y,</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> <span class='keyword'>if</span> (!pixbuf)</td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> pixels = gdk_pixbuf_get_pixels (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> priv-&gt;color[COLORSEL_RED] = <span class='macro'>SCALE(pixels[0] * 0x101)<span class='macro_popup'>(pixels[0] * 0x101 / 65535.)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> priv-&gt;color[COLORSEL_GREEN] = <span class='macro'>SCALE(pixels[1] * 0x101)<span class='macro_popup'>(pixels[1] * 0x101 / 65535.)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> priv-&gt;color[COLORSEL_BLUE] = <span class='macro'>SCALE(pixels[2] * 0x101)<span class='macro_popup'>(pixels[2] * 0x101 / 65535.)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> gtk_rgb_to_hsv (priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> priv-&gt;color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> &amp;priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> &amp;priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> &amp;priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line">shutdown_eyedropper (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> MateColorSelection *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> GdkDisplay *display = gtk_widget_get_display (widget);</td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> GdkSeat *seat = gdk_display_get_default_seat (display);</td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> colorsel = <span class='macro'>MATE_COLOR_SELECTION (widget)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((widget)), ((mate_color_selection_get_type (<br>)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_grab)</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line"> gdk_seat_ungrab (seat);</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> gtk_grab_remove (priv-&gt;dropper_grab_widget);</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> priv-&gt;has_grab = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line">mouse_motion (GtkWidget *invisible,</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> GdkEventMotion *event,</td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> grab_color_at_mouse (gdk_event_get_screen ((GdkEvent *)event),</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> gdk_event_get_device ((GdkEvent *) event),</td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> event-&gt;x_root, event-&gt;y_root, data);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line">mouse_release (GtkWidget *invisible,</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> GdkEventButton *event,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> <span class='comment'>/* MateColorSelection *colorsel = data; */</span></td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button != 1)</td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line"> grab_color_at_mouse (gdk_event_get_screen ((GdkEvent *)event),</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> gdk_event_get_device ((GdkEvent *) event),</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> event-&gt;x_root, event-&gt;y_root, data);</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> shutdown_eyedropper (<span class='macro'>GTK_WIDGET (data)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((data)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (invisible,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_motion), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> <span class='macro'>mouse_motion,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_motion), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_motion), (data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (invisible,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_release), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> <span class='macro'>mouse_release,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_release), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_release), (data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"><span class='comment'>/* Helper Functions */</span></td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line">key_press (GtkWidget *invisible,</td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> GdkEventKey *event,</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"> GdkDevice *device, *pointer_device;</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> GdkScreen *screen = gdk_event_get_screen ((GdkEvent *)event);</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> guint state = event-&gt;state &amp; gtk_accelerator_get_default_mod_mask ();</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line"> gint x, y;</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> gint dx, dy;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> device = gdk_event_get_device ((GdkEvent *) event);</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> pointer_device = gdk_device_get_associated_device (device);</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> gdk_device_get_position (pointer_device, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;x, &amp;y);</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> dx = 0;</td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> dy = 0;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> <span class='keyword'>switch</span> (event-&gt;keyval)</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_space<span class='macro_popup'>0x020</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Return<span class='macro_popup'>0xff0d</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_ISO_Enter<span class='macro_popup'>0xfe34</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Enter<span class='macro_popup'>0xff8d</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Space<span class='macro_popup'>0xff80</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> grab_color_at_mouse (screen, pointer_device, x, y, data);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> <span class='comment'>/* fall through */</span></td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Escape<span class='macro_popup'>0xff1b</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> shutdown_eyedropper (data);</td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (invisible,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> <span class='macro'>mouse_press,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_press), (data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (invisible,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (key_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> <span class='macro'>key_press,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (key_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (key_press), (data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"><span class='directive'>#if defined GDK_WINDOWING_X11</span></td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Up<span class='macro_popup'>0xff52</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Up<span class='macro_popup'>0xff97</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> dy = state == GDK_MOD1_MASK ? -<span class='macro'>BIG_STEP<span class='macro_popup'>20</span></span> : -1;</td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Down<span class='macro_popup'>0xff54</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Down<span class='macro_popup'>0xff99</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> dy = state == GDK_MOD1_MASK ? <span class='macro'>BIG_STEP<span class='macro_popup'>20</span></span> : 1;</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Left<span class='macro_popup'>0xff51</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Left<span class='macro_popup'>0xff96</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> dx = state == GDK_MOD1_MASK ? -<span class='macro'>BIG_STEP<span class='macro_popup'>20</span></span> : -1;</td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Right<span class='macro_popup'>0xff53</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Right<span class='macro_popup'>0xff98</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> dx = state == GDK_MOD1_MASK ? <span class='macro'>BIG_STEP<span class='macro_popup'>20</span></span> : 1;</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line"> gdk_device_warp (pointer_device, screen, x + dx, y + dy);</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line">mouse_press (GtkWidget *invisible,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> GdkEventButton *event,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> <span class='comment'>/* MateColorSelection *colorsel = data; */</span></td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span class='keyword'>if</span> (event-&gt;type == GDK_BUTTON_PRESS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> event-&gt;button == 1)</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='macro'>g_signal_connect (invisible, <span class='string_literal'>"motion-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((invisible), ("motion-notify-event"), (<br>((GCallback) (mouse_motion))), (data), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='macro'>G_CALLBACK (mouse_motion),<span class='macro_popup'>g_signal_connect_data ((invisible), ("motion-notify-event"), (<br>((GCallback) (mouse_motion))), (data), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_connect_data ((invisible), ("motion-notify-event"), (<br>((GCallback) (mouse_motion))), (data), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> <span class='macro'>g_signal_connect (invisible, <span class='string_literal'>"button-release-event"</span>,<span class='macro_popup'>g_signal_connect_data ((invisible), ("button-release-event"),<br> (((GCallback) (mouse_release))), (data), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> <span class='macro'>G_CALLBACK (mouse_release),<span class='macro_popup'>g_signal_connect_data ((invisible), ("button-release-event"),<br> (((GCallback) (mouse_release))), (data), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_connect_data ((invisible), ("button-release-event"),<br> (((GCallback) (mouse_release))), (data), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (invisible,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='macro'>mouse_press,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (mouse_press), (data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (invisible,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (key_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='macro'>key_press,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (key_press), (data))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> <span class='macro'>data)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((invisible), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (key_press), (data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"><span class='comment'>/* when the button is clicked */</span></td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line">get_screen_color (GtkWidget *button)</td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> MateColorSelection *colorsel = g_object_get_data (<span class='macro'>G_OBJECT (button)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((button)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"COLORSEL"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> GdkScreen *screen = gtk_widget_get_screen (<span class='macro'>GTK_WIDGET (button)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((button)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> GdkCursor *picker_cursor;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> GdkGrabStatus grab_status;</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> GtkWidget *grab_widget, *toplevel;</td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> GdkEvent *event;</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> GdkSeat *seat;</td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> guint32 time = gtk_get_current_event_time ();</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> event = gtk_get_current_event ();</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;dropper_grab_widget == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> grab_widget = gtk_window_new (GTK_WINDOW_POPUP);</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> gtk_window_set_screen (<span class='macro'>GTK_WINDOW (grab_widget)<span class='macro_popup'>((((GtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grab_widget)), ((gtk_window_get_type ()))))))</span></span>, screen);</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> gtk_window_resize (<span class='macro'>GTK_WINDOW (grab_widget)<span class='macro_popup'>((((GtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grab_widget)), ((gtk_window_get_type ()))))))</span></span>, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> gtk_window_move (<span class='macro'>GTK_WINDOW (grab_widget)<span class='macro_popup'>((((GtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grab_widget)), ((gtk_window_get_type ()))))))</span></span>, -100, -100);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> gtk_widget_show (grab_widget);</td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> gtk_widget_add_events (grab_widget,</td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> toplevel = gtk_widget_get_toplevel (<span class='macro'>GTK_WIDGET (colorsel)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_WINDOW (toplevel)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(toplevel)); GType __t = ((gtk_window_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"> <span class='keyword'>if</span> (gtk_window_get_group (<span class='macro'>GTK_WINDOW (toplevel)<span class='macro_popup'>((((GtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((toplevel)), ((gtk_window_get_type ()))))))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> gtk_window_group_add_window (gtk_window_get_group (<span class='macro'>GTK_WINDOW (toplevel)<span class='macro_popup'>((((GtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((toplevel)), ((gtk_window_get_type ()))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='macro'>GTK_WINDOW (grab_widget)<span class='macro_popup'>((((GtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grab_widget)), ((gtk_window_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> priv-&gt;dropper_grab_widget = grab_widget;</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> display = gtk_widget_get_display (priv-&gt;dropper_grab_widget);</td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> seat = gdk_display_get_default_seat (display);</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> <span class='keyword'>if</span> (gdk_seat_grab (seat, gtk_widget_get_window (priv-&gt;dropper_grab_widget),</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> GDK_SEAT_CAPABILITY_KEYBOARD, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> event,</td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) != GDK_GRAB_SUCCESS)</td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> gdk_event_free (event);</td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> picker_cursor = make_picker_cursor (screen);</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> grab_status = gdk_seat_grab (seat, gtk_widget_get_window (priv-&gt;dropper_grab_widget),</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> GDK_SEAT_CAPABILITY_POINTER, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, picker_cursor,</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> event,</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> gdk_event_free (event);</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> g_object_unref (picker_cursor);</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> <span class='keyword'>if</span> (grab_status != GDK_GRAB_SUCCESS)</td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> gdk_seat_ungrab (seat);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> gtk_grab_add (priv-&gt;dropper_grab_widget);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> priv-&gt;grab_time = time;</td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> priv-&gt;has_grab = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;dropper_grab_widget, <span class='string_literal'>"button-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;dropper_grab_widget), ("button-press-event"<br>), (((GCallback) (mouse_press))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> <span class='macro'>G_CALLBACK (mouse_press), colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;dropper_grab_widget), ("button-press-event"<br>), (((GCallback) (mouse_press))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;dropper_grab_widget, <span class='string_literal'>"key-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;dropper_grab_widget), ("key-press-event"<br>), (((GCallback) (key_press))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> <span class='macro'>G_CALLBACK (key_press), colorsel)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;dropper_grab_widget), ("key-press-event"<br>), (((GCallback) (key_press))), (colorsel), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"><span id="start26"><span class='keyword'>static</span></span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line">hex_changed (GtkWidget *hex_entry,</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> <span id="start25"><span id="end26">MateColorSelection</span></span> *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> GdkRGBA color;</td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span id="start24"><span id="end25"><span class='keyword'>if</span></span></span> (<span id="start23"><span class="mrange"><span id="end24">priv</span></span>-&gt;changing</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgEvent" style="margin-left:7ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Assuming field 'changing' is 0</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:3ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> <span id="start20"><span id="end21"><span id="start22"><span id="end23">text</span></span></span></span> = <span id="start21"><span id="end22">gtk_editable_get_chars</span></span> (<span class='macro'>GTK_EDITABLE (priv-&gt;hex_entry)<span class='macro_popup'>((((GtkEditable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;hex_entry)), ((gtk_editable_get_type ()))))))</span></span>, 0, -1);</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> <span id="start2"><span id="end3"><span id="start19"><span id="end20"><span class='keyword'>if</span></span></span></span></span> (!<span id="start3"><span id="start4"><span id="end4"><span class="mrange"><span id="start5"><span id="end5"><span id="start6"><span id="end6"><span id="start7"><span id="end7"><span id="start8"><span id="end8"><span id="start9"><span id="end9"><span id="start10"><span id="end10"><span id="start11"><span id="end11"><span id="start12"><span id="end12"><span class="mrange"><span id="start13"><span id="end13"><span id="start14"><span id="end14"><span id="start15"><span id="end15"><span id="start16"><span id="end16"><span id="start17"><span id="end17"><span id="start18"><span id="end18"><span id="end19"><span class='macro'>g_str_has_prefix</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (text, <span class='string_literal'>"#"</span>)<span class='macro_popup'>(__builtin_constant_p ("#")? __extension__ ({ const char * const<br> __str = (text); const char * const __prefix = ("#"); gboolean<br> __result = (0); if (__str == ((void*)0) || __prefix == ((void<br>*)0)) __result = (g_str_has_prefix) (__str, __prefix); else {<br> const size_t __str_len = strlen (((__str) + !(__str))); const<br> size_t __prefix_len = strlen (((__prefix) + !(__prefix))); if<br> (__str_len &gt;= __prefix_len) __result = memcmp (((__str) +<br> !(__str)), ((__prefix) + !(__prefix)), __prefix_len) == 0; }<br> __result; }) : (g_str_has_prefix) (text, "#") )</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgControl" style="margin-left:8ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>'?' condition is true</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:8ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming '__str' is not equal to null</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:8ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:8ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Assuming '__str_len' is &lt; '__prefix_len'</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:8ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgControl" style="margin-left:3ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> <span id="start1"><span class="mrange"><span id="end2">g_free</span></span> (text)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgEvent" style="margin-left:7ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Memory is released</td><td><div class="PathNav"><a href="#EndPath" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span id="start0"><span id="end1">gchar</span></span> *tmp = <span id="end0">g_strconcat</span> (<span class='string_literal'>"#"</span>, <span class="mrange">text</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:20ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Use of memory after it is freed</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> text = tmp;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"> <span class='keyword'>if</span> (gdk_rgba_parse (&amp;color, text))</td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> priv-&gt;color[COLORSEL_RED] = color.red;</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> priv-&gt;color[COLORSEL_GREEN] = color.green;</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> priv-&gt;color[COLORSEL_BLUE] = color.blue;</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> gtk_rgb_to_hsv (priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> priv-&gt;color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> &amp;priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> &amp;priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> &amp;priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> g_free (text);</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line">hex_focus_out (GtkWidget *hex_entry,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> GdkEventFocus *event,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span class="mrange">hex_changed (hex_entry, data)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:3ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Calling 'hex_changed'</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line">hsv_changed (GtkWidget *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> MateColorSelection *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;changing)</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> mate_hsv_get_color (<span class='macro'>MATE_HSV (hsv)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((mate_hsv_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> &amp;priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> &amp;priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> &amp;priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> gtk_hsv_to_rgb (priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> priv-&gt;color[COLORSEL_VALUE],</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> &amp;priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> &amp;priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> &amp;priv-&gt;color[COLORSEL_BLUE]);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line">adjustment_changed (GtkAdjustment *adjustment,</td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> MateColorSelection *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> gdouble value;</td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> colorsel = <span class='macro'>MATE_COLOR_SELECTION (g_object_get_data (G_OBJECT (adjustment), <span class='string_literal'>"COLORSEL"</span>))<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((g_object_get_data (((((GObject*) (void *) g_type_check_instance_cast<br> ((GTypeInstance*) ((adjustment)), (((GType) ((20) &lt;&lt; (<br>2)))))))), "COLORSEL"))), ((mate_color_selection_get_type ())<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> value = gtk_adjustment_get_value (adjustment);</td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;changing)</td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> <span class='keyword'>switch</span> (<span class='macro'>GPOINTER_TO_INT (data)<span class='macro_popup'>((gint) (glong) (data))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span class='keyword'>case</span> COLORSEL_SATURATION:</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> <span class='keyword'>case</span> COLORSEL_VALUE:</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> priv-&gt;color[<span class='macro'>GPOINTER_TO_INT (data)<span class='macro_popup'>((gint) (glong) (data))</span></span>] = value / 100;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> gtk_hsv_to_rgb (priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> priv-&gt;color[COLORSEL_VALUE],</td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> &amp;priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> &amp;priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> &amp;priv-&gt;color[COLORSEL_BLUE]);</td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> <span class='keyword'>case</span> COLORSEL_HUE:</td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> priv-&gt;color[<span class='macro'>GPOINTER_TO_INT (data)<span class='macro_popup'>((gint) (glong) (data))</span></span>] = value / 360;</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> gtk_hsv_to_rgb (priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> priv-&gt;color[COLORSEL_VALUE],</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> &amp;priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> &amp;priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> &amp;priv-&gt;color[COLORSEL_BLUE]);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> <span class='keyword'>case</span> COLORSEL_RED:</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> <span class='keyword'>case</span> COLORSEL_GREEN:</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> <span class='keyword'>case</span> COLORSEL_BLUE:</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> priv-&gt;color[<span class='macro'>GPOINTER_TO_INT (data)<span class='macro_popup'>((gint) (glong) (data))</span></span>] = value / 255;</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> gtk_rgb_to_hsv (priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> priv-&gt;color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> &amp;priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> &amp;priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> &amp;priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"> priv-&gt;color[<span class='macro'>GPOINTER_TO_INT (data)<span class='macro_popup'>((gint) (glong) (data))</span></span>] = value / 255;</td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line">opacity_entry_changed (GtkWidget *opacity_entry,</td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> MateColorSelection *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> GtkAdjustment *adj;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> colorsel = <span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;changing)</td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> text = gtk_editable_get_chars (<span class='macro'>GTK_EDITABLE (priv-&gt;opacity_entry)<span class='macro_popup'>((((GtkEditable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_entry)), ((gtk_editable_get_type ()))))<br>))</span></span>, 0, -1);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> adj = gtk_range_get_adjustment (<span class='macro'>GTK_RANGE (priv-&gt;opacity_slider)<span class='macro_popup'>((((GtkRange*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_slider)), ((gtk_range_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> gtk_adjustment_set_value (adj, g_strtod (text, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> g_free (text);</td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line">make_label_spinbutton (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> GtkWidget **spinbutton,</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"> gchar *text,</td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> GtkWidget *grid,</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> gint i,</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> gint j,</td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> gint channel_type,</td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> <span class='keyword'>const</span> gchar *tooltip)</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> GtkWidget *label;</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> GtkAdjustment *adjust;</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (channel_type == COLORSEL_HUE)</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> adjust = <span class='macro'>GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 360.0, 1.0, 1.0, 0.0))<span class='macro_popup'>((((GtkAdjustment*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((gtk_adjustment_new (0.0, 0.0, 360.0, 1.0, 1.0, 0.0))), (<br>(gtk_adjustment_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (channel_type == COLORSEL_SATURATION ||</td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> channel_type == COLORSEL_VALUE)</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> adjust = <span class='macro'>GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 100.0, 1.0, 1.0, 0.0))<span class='macro_popup'>((((GtkAdjustment*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((gtk_adjustment_new (0.0, 0.0, 100.0, 1.0, 1.0, 0.0))), (<br>(gtk_adjustment_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> adjust = <span class='macro'>GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 1.0, 0.0))<span class='macro_popup'>((((GtkAdjustment*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 1.0, 0.0))), (<br>(gtk_adjustment_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (adjust)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((adjust)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"COLORSEL"</span>, colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line"> *spinbutton = gtk_spin_button_new (adjust, 10.0, 0);</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"> gtk_widget_set_tooltip_text (*spinbutton, tooltip);</td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"> <span class='macro'>g_signal_connect (adjust, <span class='string_literal'>"value-changed"</span>,<span class='macro_popup'>g_signal_connect_data ((adjust), ("value-changed"), (((GCallback<br>) (adjustment_changed))), (((gpointer) (glong) (channel_type)<br>)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line"> <span class='macro'>G_CALLBACK (adjustment_changed),<span class='macro_popup'>g_signal_connect_data ((adjust), ("value-changed"), (((GCallback<br>) (adjustment_changed))), (((gpointer) (glong) (channel_type)<br>)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line"> <span class='macro'>GINT_TO_POINTER (channel_type))<span class='macro_popup'>g_signal_connect_data ((adjust), ("value-changed"), (((GCallback<br>) (adjustment_changed))), (((gpointer) (glong) (channel_type)<br>)), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> label = gtk_label_new_with_mnemonic (text);</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> gtk_label_set_mnemonic_widget (<span class='macro'>GTK_LABEL (label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((label)), ((gtk_label_get_type ()))))))</span></span>, *spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> gtk_label_set_xalign (<span class='macro'>GTK_LABEL (label)<span class='macro_popup'>((((GtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((label)), ((gtk_label_get_type ()))))))</span></span>, 0.0);</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, label, i, j, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, *spinbutton, i+1, j, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line">make_palette_frame (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> GtkWidget *grid,</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> gint i,</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> gint j)</td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> GtkWidget *frame;</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line"> frame = gtk_frame_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> gtk_frame_set_shadow_type (<span class='macro'>GTK_FRAME (frame)<span class='macro_popup'>((((GtkFrame*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((frame)), ((gtk_frame_get_type ()))))))</span></span>, GTK_SHADOW_IN);</td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"> priv-&gt;custom_palette[i][j] = palette_new (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line"> gtk_widget_set_size_request (priv-&gt;custom_palette[i][j], <span class='macro'>CUSTOM_PALETTE_ENTRY_WIDTH<span class='macro_popup'>20</span></span>, <span class='macro'>CUSTOM_PALETTE_ENTRY_HEIGHT<span class='macro_popup'>20</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (frame)<span class='macro_popup'>((((GtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((frame)), ((gtk_container_get_type ()))))))</span></span>, priv-&gt;custom_palette[i][j]);</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> gtk_widget_set_hexpand (frame, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> gtk_grid_attach (<span class='macro'>GTK_GRID (grid)<span class='macro_popup'>((((GtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((grid)), ((gtk_grid_get_type ()))))))</span></span>, frame, i, j, 1, 1);</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"><span class='comment'>/* Set the palette entry [x][y] to be the currently selected one. */</span></td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">set_selected_palette (MateColorSelection *colorsel, <span class='keyword'>int</span> x, <span class='keyword'>int</span> y)</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> gtk_widget_grab_focus (priv-&gt;custom_palette[x][y]);</td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line">scale_round (<span class='keyword'>double</span> val, <span class='keyword'>double</span> factor)</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> val = floor (val * factor + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> val = <span class='macro'>MAX (val, 0)<span class='macro_popup'>(((val) &gt; (0)) ? (val) : (0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> val = <span class='macro'>MIN (val, factor)<span class='macro_popup'>(((val) &lt; (factor)) ? (val) : (factor))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>return</span> val;</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line">update_color (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MateColorSelectionPrivate *priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> gchar entryval[12];</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> gchar opacity_text[32];</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> gchar *ptr;</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> <span class='keyword'>double</span> r;</td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> <span class='keyword'>double</span> g;</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> <span class='keyword'>double</span> b;</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> priv-&gt;changing = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> color_sample_update_samples (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> mate_hsv_set_color (<span class='macro'>MATE_HSV (priv-&gt;triangle_colorsel)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;triangle_colorsel)), ((mate_hsv_get_type ()))))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> gtk_adjustment_set_value (gtk_spin_button_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;hue_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;hue_spinbutton)), ((gtk_spin_button_get_type ()<br>))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_HUE], 360));</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> gtk_adjustment_set_value (gtk_spin_button_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;sat_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;sat_spinbutton)), ((gtk_spin_button_get_type ()<br>))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_SATURATION], 100));</td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> gtk_adjustment_set_value (gtk_spin_button_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;val_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;val_spinbutton)), ((gtk_spin_button_get_type ()<br>))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_VALUE], 100));</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> gtk_adjustment_set_value (gtk_spin_button_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;red_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;red_spinbutton)), ((gtk_spin_button_get_type ()<br>))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_RED], 255));</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> gtk_adjustment_set_value (gtk_spin_button_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;green_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;green_spinbutton)), ((gtk_spin_button_get_type (<br>)))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_GREEN], 255));</td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> gtk_adjustment_set_value (gtk_spin_button_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> (<span class='macro'>GTK_SPIN_BUTTON (priv-&gt;blue_spinbutton)<span class='macro_popup'>((((GtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;blue_spinbutton)), ((gtk_spin_button_get_type (<br>)))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_BLUE], 255));</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> gtk_adjustment_set_value (gtk_range_get_adjustment</td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> (<span class='macro'>GTK_RANGE (priv-&gt;opacity_slider)<span class='macro_popup'>((((GtkRange*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_slider)), ((gtk_range_get_type ()))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> scale_round (priv-&gt;color[COLORSEL_OPACITY], 255));</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> g_snprintf (opacity_text, 32, <span class='string_literal'>"%.0f"</span>, scale_round (priv-&gt;color[COLORSEL_OPACITY], 255));</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> gtk_entry_set_text (<span class='macro'>GTK_ENTRY (priv-&gt;opacity_entry)<span class='macro_popup'>((((GtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;opacity_entry)), ((gtk_entry_get_type ()))))))</span></span>, opacity_text);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> r = scale_round (priv-&gt;color[COLORSEL_RED], 255);</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> g = scale_round (priv-&gt;color[COLORSEL_GREEN], 255);</td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> b = scale_round (priv-&gt;color[COLORSEL_BLUE], 255);</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> g_snprintf (entryval, 11, <span class='string_literal'>"#%2X%2X%2X"</span>, (guint) r, (guint) g, (guint) b);</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> <span class='keyword'>for</span> (ptr = entryval; *ptr; ptr++)</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> <span class='keyword'>if</span> (*ptr == ' ')</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> *ptr = '0';</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> gtk_entry_set_text (<span class='macro'>GTK_ENTRY (priv-&gt;hex_entry)<span class='macro_popup'>((((GtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;hex_entry)), ((gtk_entry_get_type ()))))))</span></span>, entryval);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> priv-&gt;changing = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line"> <span class='macro'>g_object_ref (colorsel)<span class='macro_popup'>((__typeof__ (colorsel)) (g_object_ref) (colorsel))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"> g_signal_emit (colorsel, color_selection_signals[COLOR_CHANGED], 0);</td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> g_object_freeze_notify (<span class='macro'>G_OBJECT (colorsel)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (colorsel)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"current-rgba"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (colorsel)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"current-alpha"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> g_object_thaw_notify (<span class='macro'>G_OBJECT (colorsel)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> g_object_unref (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line">update_palette (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> GdkRGBA *current_colors;</td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> gint i, j;</td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> current_colors = get_current_colors (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; <span class='macro'>GTK_CUSTOM_PALETTE_HEIGHT<span class='macro_popup'>4</span></span>; i++)</td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"> <span class='keyword'>for</span> (j = 0; j &lt; <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span>; j++)</td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> gint index;</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> index = i * <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span> + j;</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> mate_color_selection_set_palette_color (colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> index,</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line"> &amp;current_colors[index]);</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> g_free (current_colors);</td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line">palette_change_notify_instance (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> update_palette (<span class='macro'>MATE_COLOR_SELECTION (data)<span class='macro_popup'>((((MateColorSelection*) (void *) g_type_check_instance_cast (<br>(GTypeInstance*) ((data)), ((mate_color_selection_get_type ()<br>))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line">default_noscreen_change_palette_func (<span class='keyword'>const</span> GdkRGBA *colors,</td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> gint n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line"> default_change_palette_func (gdk_screen_get_default (), colors, n_colors);</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line">default_change_palette_func (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line"> <span class='keyword'>const</span> GdkRGBA *colors,</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> gint n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> gchar *str;</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> str = mate_color_selection_palette_to_string (colors, n_colors);</td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> g_object_set (<span class='macro'>G_OBJECT (gtk_settings_get_for_screen (screen))<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((gtk_settings_get_for_screen (screen))), (((GType) ((20) &lt;&lt;<br> (2))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='string_literal'>"gtk-color-palette"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> str,</td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* mate_color_selection_new:</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>* Creates a new MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* Return value: a new #MateColorSelection</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line">mate_color_selection_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> MateColorSelection *colorsel;</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> gdouble color[4];</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> color[0] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> color[1] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line"> color[2] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> color[3] = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> colorsel = g_object_new (<span class='macro'>MATE_TYPE_COLOR_SELECTION<span class='macro_popup'>(mate_color_selection_get_type ())</span></span>, <span class='string_literal'>"orientation"</span>, GTK_ORIENTATION_VERTICAL, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> set_color_internal (colorsel, color);</td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"> mate_color_selection_set_has_opacity_control (colorsel, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>/* We want to make sure that default_set is FALSE */</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>/* This way the user can still set it */</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> priv-&gt;default_set = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> priv-&gt;default_alpha_set = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET (colorsel)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* mate_color_selection_get_has_opacity_control:</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>* Determines whether the colorsel has an opacity control.</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line"> <span class='comment'>* Return value: %TRUE if the @colorsel has an opacity control. %FALSE if it does't.</span></td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line">mate_color_selection_get_has_opacity_control (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_COLOR_SELECTION (colorsel), FALSE)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"> <span class='keyword'>return</span> priv-&gt;has_opacity;</td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"> <span class='comment'>* mate_color_selection_set_has_opacity_control:</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"> <span class='comment'>* @has_opacity: %TRUE if @colorsel can set the opacity, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"> <span class='comment'>* Sets the @colorsel to use or not use opacity.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line">mate_color_selection_set_has_opacity_control (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"> gboolean has_opacity)</td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line"> has_opacity = has_opacity != <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_opacity != has_opacity)</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> priv-&gt;has_opacity = (has_opacity != <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> <span class='keyword'>if</span> (has_opacity)</td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> gtk_widget_show (priv-&gt;opacity_slider);</td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> gtk_widget_show (priv-&gt;opacity_label);</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> gtk_widget_show (priv-&gt;opacity_entry);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> gtk_widget_hide (priv-&gt;opacity_slider);</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> gtk_widget_hide (priv-&gt;opacity_label);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> gtk_widget_hide (priv-&gt;opacity_entry);</td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> color_sample_update_samples (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (colorsel)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"has-opacity-control"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line"> <span class='comment'>* mate_color_selection_get_has_palette:</span></td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='comment'>* Determines whether the color selector has a color palette.</span></td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='comment'>* Return value: %TRUE if the selector has a palette. %FALSE if it hasn't.</span></td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line">mate_color_selection_get_has_palette (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_COLOR_SELECTION (colorsel), FALSE)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line"> <span class='keyword'>return</span> priv-&gt;has_palette;</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* mate_color_selection_set_has_palette:</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* @has_palette: %TRUE if palette is to be visible, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* Shows and hides the palette based upon the value of @has_palette.</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line">mate_color_selection_set_has_palette (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line"> gboolean has_palette)</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> has_palette = has_palette != <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;has_palette != has_palette)</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> priv-&gt;has_palette = (has_palette != <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> <span class='keyword'>if</span> (has_palette)</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> gtk_widget_show (priv-&gt;palette_frame);</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> gtk_widget_hide (priv-&gt;palette_frame);</td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> update_tooltips (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (colorsel)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((colorsel)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"has-palette"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> <span class='comment'>* mate_color_selection_set_current_rgba:</span></td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='comment'>* @color: A #GdkRGBA to set the current color with.</span></td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='comment'>* Sets the current color to be @color. The first time this is called, it will</span></td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> <span class='comment'>* also set the original color to be @color too.</span></td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line">mate_color_selection_set_current_rgba (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> <span class='keyword'>const</span> GdkRGBA *rgba)</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> <span class='macro'>g_return_if_fail (rgba != NULL)<span class='macro_popup'>do { if ((rgba != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rgba != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> priv-&gt;changing = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> priv-&gt;color[COLORSEL_RED] = <span class='macro'>CLAMP (rgba-&gt;red, 0, 1)<span class='macro_popup'>(((rgba-&gt;red) &gt; (1)) ? (1) : (((rgba-&gt;red) &lt; (0))<br> ? (0) : (rgba-&gt;red)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"> priv-&gt;color[COLORSEL_GREEN] = <span class='macro'>CLAMP (rgba-&gt;green, 0, 1)<span class='macro_popup'>(((rgba-&gt;green) &gt; (1)) ? (1) : (((rgba-&gt;green) &lt; (<br>0)) ? (0) : (rgba-&gt;green)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> priv-&gt;color[COLORSEL_BLUE] = <span class='macro'>CLAMP (rgba-&gt;blue, 0, 1)<span class='macro_popup'>(((rgba-&gt;blue) &gt; (1)) ? (1) : (((rgba-&gt;blue) &lt; (0<br>)) ? (0) : (rgba-&gt;blue)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> priv-&gt;color[COLORSEL_OPACITY] = <span class='macro'>CLAMP (rgba-&gt;alpha, 0, 1)<span class='macro_popup'>(((rgba-&gt;alpha) &gt; (1)) ? (1) : (((rgba-&gt;alpha) &lt; (<br>0)) ? (0) : (rgba-&gt;alpha)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> gtk_rgb_to_hsv (priv-&gt;color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> priv-&gt;color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> priv-&gt;color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> &amp;priv-&gt;color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> &amp;priv-&gt;color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> &amp;priv-&gt;color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;default_set == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; COLORSEL_NUM_CHANNELS; i++)</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line"> priv-&gt;old_color[i] = priv-&gt;color[i];</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> priv-&gt;default_set = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"> <span class='comment'>* mate_color_selection_set_current_alpha:</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> <span class='comment'>* @alpha: an integer between 0 and 65535.</span></td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='comment'>* Sets the current opacity to be @alpha. The first time this is called, it will</span></td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='comment'>* also set the original opacity to be @alpha too.</span></td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line">mate_color_selection_set_current_alpha (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> guint16 alpha)</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> priv-&gt;changing = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> priv-&gt;color[COLORSEL_OPACITY] = <span class='macro'>SCALE (alpha)<span class='macro_popup'>(alpha / 65535.)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;default_alpha_set == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; COLORSEL_NUM_CHANNELS; i++)</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> priv-&gt;old_color[i] = priv-&gt;color[i];</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> priv-&gt;default_alpha_set = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> update_color (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> <span class='comment'>* mate_color_selection_set_color:</span></td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='comment'>* @color: an array of 4 doubles specifying the red, green, blue and opacity</span></td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> <span class='comment'>* to set the current color to.</span></td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='comment'>* Sets the current color to be @color. The first time this is called, it will</span></td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='comment'>* also set the original color to be @color too.</span></td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line"> <span class='comment'>* Deprecated: 2.0: Use mate_color_selection_set_current_color() instead.</span></td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line">mate_color_selection_set_color (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> gdouble *color)</td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> set_color_internal (colorsel, color);</td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line"> <span class='comment'>* mate_color_selection_get_current_rgba:</span></td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> <span class='comment'>* @color: (out): a #GdkRGBA to fill in with the current color.</span></td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> <span class='comment'>* Sets @color to be the current color in the MateColorSelection widget.</span></td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line">mate_color_selection_get_current_rgba (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> GdkRGBA *color)</td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> <span class='macro'>g_return_if_fail (color != NULL)<span class='macro_popup'>do { if ((color != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "color != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> color-&gt;red = priv-&gt;color[COLORSEL_RED];</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> color-&gt;green = priv-&gt;color[COLORSEL_GREEN];</td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> color-&gt;blue = priv-&gt;color[COLORSEL_BLUE];</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> <span class='comment'>* mate_color_selection_get_current_alpha:</span></td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> <span class='comment'>* Returns the current alpha value.</span></td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line"> <span class='comment'>* Return value: an integer between 0 and 65535.</span></td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line">guint16</td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line">mate_color_selection_get_current_alpha (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_COLOR_SELECTION (colorsel), 0)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='keyword'>return</span> priv-&gt;has_opacity ? <span class='macro'>UNSCALE (priv-&gt;color[COLORSEL_OPACITY])<span class='macro_popup'>((guint16)(priv-&gt;color[COLORSEL_OPACITY] * 65535 + 0.5))</span></span> : 65535;</td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>* mate_color_selection_get_color:</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line"> <span class='comment'>* @color: an array of 4 #gdouble to fill in with the current color.</span></td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='comment'>* Sets @color to be the current color in the MateColorSelection widget.</span></td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line"> <span class='comment'>* Deprecated: 2.0: Use mate_color_selection_get_current_color() instead.</span></td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line">mate_color_selection_get_color (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> gdouble *color)</td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> color[0] = priv-&gt;color[COLORSEL_RED];</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> color[1] = priv-&gt;color[COLORSEL_GREEN];</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> color[2] = priv-&gt;color[COLORSEL_BLUE];</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> color[3] = priv-&gt;has_opacity ? priv-&gt;color[COLORSEL_OPACITY] : 65535;</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> <span class='comment'>* mate_color_selection_set_previous_color:</span></td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> <span class='comment'>* @color: a #GdkRGBA to set the previous color with.</span></td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> <span class='comment'>* Sets the 'previous' color to be @color. This function should be called with</span></td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> <span class='comment'>* some hesitations, as it might seem confusing to have that color change.</span></td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='comment'>* Calling mate_color_selection_set_current_color() will also set this color the first</span></td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> <span class='comment'>* time it is called.</span></td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line">mate_color_selection_set_previous_color (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> <span class='keyword'>const</span> GdkRGBA *color)</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> <span class='macro'>g_return_if_fail (color != NULL)<span class='macro_popup'>do { if ((color != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "color != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> priv-&gt;changing = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> priv-&gt;old_color[COLORSEL_RED] = color-&gt;red;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> priv-&gt;old_color[COLORSEL_GREEN] = color-&gt;green;</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> priv-&gt;old_color[COLORSEL_BLUE] = color-&gt;blue;</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> gtk_rgb_to_hsv (priv-&gt;old_color[COLORSEL_RED],</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> priv-&gt;old_color[COLORSEL_GREEN],</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> priv-&gt;old_color[COLORSEL_BLUE],</td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> &amp;priv-&gt;old_color[COLORSEL_HUE],</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> &amp;priv-&gt;old_color[COLORSEL_SATURATION],</td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line"> &amp;priv-&gt;old_color[COLORSEL_VALUE]);</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> color_sample_update_samples (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"> priv-&gt;default_set = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> priv-&gt;changing = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* mate_color_selection_set_previous_alpha:</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* @alpha: an integer between 0 and 65535.</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Sets the 'previous' alpha to be @alpha. This function should be called with</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>* some hesitations, as it might seem confusing to have that alpha change.</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line">mate_color_selection_set_previous_alpha (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line"> guint16 alpha)</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> priv-&gt;changing = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> priv-&gt;old_color[COLORSEL_OPACITY] = <span class='macro'>SCALE (alpha)<span class='macro_popup'>(alpha / 65535.)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> color_sample_update_samples (colorsel);</td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> priv-&gt;default_alpha_set = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> priv-&gt;changing = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"> <span class='comment'>* mate_color_selection_get_previous_color:</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @color: (out): a #GdkRGBA to fill in with the original color value.</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Fills @color in with the original color value.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line">mate_color_selection_get_previous_color (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line"> GdkRGBA *color)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='macro'>g_return_if_fail (color != NULL)<span class='macro_popup'>do { if ((color != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "color != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"> color-&gt;red = priv-&gt;old_color[COLORSEL_RED];</td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> color-&gt;green = priv-&gt;old_color[COLORSEL_GREEN];</td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> color-&gt;blue = priv-&gt;old_color[COLORSEL_BLUE];</td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>* mate_color_selection_get_previous_alpha:</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line"> <span class='comment'>* Returns the previous alpha value.</span></td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='comment'>* Return value: an integer between 0 and 65535.</span></td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line">guint16</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line">mate_color_selection_get_previous_alpha (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_COLOR_SELECTION (colorsel), 0)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='keyword'>return</span> priv-&gt;has_opacity ? <span class='macro'>UNSCALE (priv-&gt;old_color[COLORSEL_OPACITY])<span class='macro_popup'>((guint16)(priv-&gt;old_color[COLORSEL_OPACITY] * 65535 + 0.5<br>))</span></span> : 65535;</td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='comment'>* mate_color_selection_set_palette_color:</span></td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> <span class='comment'>* @index: the color index of the palette.</span></td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> <span class='comment'>* @color: A #GdkRGBA to set the palette with.</span></td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> <span class='comment'>* Sets the palette located at @index to have @color as its color.</span></td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line">mate_color_selection_set_palette_color (MateColorSelection *colorsel,</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> gint index,</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> GdkRGBA *color)</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> gint x, y;</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> gdouble col[3];</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_COLOR_SELECTION (colorsel))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> <span class='macro'>g_return_if_fail (index &gt;= 0 &amp;&amp; index &lt; GTK_CUSTOM_PALETTE_WIDTH*GTK_CUSTOM_PALETTE_HEIGHT)<span class='macro_popup'>do { if ((index &gt;= 0 &amp;&amp; index &lt; 9*4)) { } else {<br> g_return_if_fail_warning ("MateDesktop", ((const char*) (__func__<br>)), "index &gt;= 0 &amp;&amp; index &lt; GTK_CUSTOM_PALETTE_WIDTH*GTK_CUSTOM_PALETTE_HEIGHT"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> x = index % <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> y = index / <span class='macro'>GTK_CUSTOM_PALETTE_WIDTH<span class='macro_popup'>9</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> col[0] = color-&gt;red;</td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"> col[1] = color-&gt;green;</td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> col[2] = color-&gt;blue;</td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> palette_set_color (priv-&gt;custom_palette[x][y], colorsel, col);</td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"> <span class='comment'>* mate_color_selection_is_adjusting:</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line"> <span class='comment'>* @colorsel: a #MateColorSelection.</span></td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='comment'>* Gets the current state of the @colorsel.</span></td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> <span class='comment'>* Return value: %TRUE if the user is currently dragging a color around, and %FALSE</span></td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='comment'>* if the selection has stopped.</span></td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line">mate_color_selection_is_adjusting (MateColorSelection *colorsel)</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> MateColorSelectionPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_COLOR_SELECTION (colorsel), FALSE)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((colorsel)); GType __t = ((mate_color_selection_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "MATE_IS_COLOR_SELECTION (colorsel)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line"> priv = colorsel-&gt;private_data;</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"> <span class='keyword'>return</span> (mate_hsv_is_adjusting (<span class='macro'>MATE_HSV (priv-&gt;triangle_colorsel)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((priv-&gt;triangle_colorsel)), ((mate_hsv_get_type ()))))<br>))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='comment'>* mate_color_selection_palette_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> <span class='comment'>* @str: a string encoding a color palette.</span></td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='comment'>* @colors: (out) (array length=n_colors): return location for allocated</span></td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='comment'>* array of #GdkRGBA.</span></td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> <span class='comment'>* @n_colors: return location for length of array.</span></td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> <span class='comment'>* Parses a color palette string; the string is a colon-separated</span></td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> <span class='comment'>* list of color names readable by gdk_color_parse().</span></td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> <span class='comment'>* Return value: %TRUE if a palette was successfully parsed.</span></td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line">mate_color_selection_palette_from_string (<span class='keyword'>const</span> gchar *str,</td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"> GdkRGBA **colors,</td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> gint *n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> GdkRGBA *retval;</td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line"> gint count;</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line"> gchar *p;</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> gchar *start;</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line"> gchar *copy;</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> count = 0;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> copy = <span class='macro'>g_strdup (str)<span class='macro_popup'>g_strdup_inline (str)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line"> start = copy;</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> p = copy;</td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"> <span class='keyword'>while</span> (<span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='keyword'>if</span> (*p == ':' || *p == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line"> gboolean done = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line"> <span class='keyword'>if</span> (start == p)</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='keyword'>goto</span> failed; <span class='comment'>/* empty entry */</span></td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>if</span> (*p)</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"> done = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> retval = <span class='macro'>g_renew (GdkRGBA, retval, count + 1)<span class='macro_popup'>((GdkRGBA *) g_realloc_n (retval, (count + 1), sizeof (GdkRGBA<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line"> <span class='keyword'>if</span> (!gdk_rgba_parse (retval + count, start))</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='keyword'>goto</span> failed;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> ++count;</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (done)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> start = p + 1;</td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> ++p;</td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> g_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='keyword'>if</span> (colors)</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> *colors = retval;</td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line"> g_free (retval);</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"> <span class='keyword'>if</span> (n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line"> *n_colors = count;</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> failed:</td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> g_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line"> g_free (retval);</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"> <span class='keyword'>if</span> (colors)</td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> *colors = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='keyword'>if</span> (n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> *n_colors = 0;</td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* mate_color_selection_palette_to_string:</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>* @colors: (array length=n_colors): an array of colors.</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* @n_colors: length of the array.</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>* Encodes a palette as a string, useful for persistent storage.</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line"> <span class='comment'>* Return value: allocated string encoding the palette.</span></td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">gchar*</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line">mate_color_selection_palette_to_string (<span class='keyword'>const</span> GdkRGBA *colors,</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> gint n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> gchar **strs = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> gchar *retval;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> <span class='keyword'>if</span> (n_colors == 0)</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> strs = <span class='macro'>g_new0 (gchar*, n_colors + 1)<span class='macro_popup'>((gchar* *) g_malloc0_n ((n_colors + 1), sizeof (gchar*)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line"> <span class='keyword'>while</span> (i &lt; n_colors)</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line"> gchar *ptr;</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> strs[i] =</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line"> g_strdup_printf (<span class='string_literal'>"#%2X%2X%2X"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> (<span class='keyword'>unsigned</span> <span class='keyword'>int</span>)colors[i].red * 255,</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> (<span class='keyword'>unsigned</span> <span class='keyword'>int</span>)colors[i].green * 255,</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> (<span class='keyword'>unsigned</span> <span class='keyword'>int</span>)colors[i].blue * 255);</td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='keyword'>for</span> (ptr = strs[i]; *ptr; ptr++)</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> <span class='keyword'>if</span> (*ptr == ' ')</td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> *ptr = '0';</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> retval = g_strjoinv (<span class='string_literal'>":"</span>, strs);</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> g_strfreev (strs);</td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line"> <span class='comment'>* mate_color_selection_set_change_palette_hook:</span></td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='comment'>* @func: a function to call when the custom palette needs saving.</span></td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> <span class='comment'>* Installs a global function to be called whenever the user tries to</span></td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> <span class='comment'>* modify the palette in a color selection. This function should save</span></td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='comment'>* the new palette contents, and update the GtkSettings property</span></td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>* "gtk-color-palette" so all MateColorSelection widgets will be modified.</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='comment'>* Return value: the previous change palette hook (that was replaced).</span></td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> <span class='comment'>* Deprecated: 2.4: This function does not work in multihead environments.</span></td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='comment'>* Use mate_color_selection_set_change_palette_with_screen_hook() instead.</span></td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line">MateColorSelectionChangePaletteFunc</td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_color_selection_set_change_palette_hook (MateColorSelectionChangePaletteFunc func)</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> MateColorSelectionChangePaletteFunc old;</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> old = noscreen_change_palette_hook;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> noscreen_change_palette_hook = func;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> <span class='keyword'>return</span> old;</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line"> <span class='comment'>* mate_color_selection_set_change_palette_with_screen_hook:</span></td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='comment'>* @func: a function to call when the custom palette needs saving.</span></td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='comment'>* Installs a global function to be called whenever the user tries to</span></td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line"> <span class='comment'>* modify the palette in a color selection. This function should save</span></td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='comment'>* the new palette contents, and update the GtkSettings property</span></td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='comment'>* "gtk-color-palette" so all MateColorSelection widgets will be modified.</span></td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> <span class='comment'>* Return value: the previous change palette hook (that was replaced).</span></td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line"> <span class='comment'>* Since: 1.9.1</span></td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line">MateColorSelectionChangePaletteWithScreenFunc</td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_color_selection_set_change_palette_with_screen_hook (MateColorSelectionChangePaletteWithScreenFunc func)</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line"> MateColorSelectionChangePaletteWithScreenFunc old;</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> old = change_palette_hook;</td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> change_palette_hook = func;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> <span class='keyword'>return</span> old;</td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line">make_control_relations (AtkObject *atk_obj,</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line"> GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"> AtkObject *obj;</td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> obj = gtk_widget_get_accessible (widget);</td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> atk_object_add_relationship (atk_obj, ATK_RELATION_CONTROLLED_BY, obj);</td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"> atk_object_add_relationship (obj, ATK_RELATION_CONTROLLER_FOR, atk_obj);</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line">make_all_relations (AtkObject *atk_obj,</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> MateColorSelectionPrivate *priv)</td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> make_control_relations (atk_obj, priv-&gt;hue_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> make_control_relations (atk_obj, priv-&gt;sat_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> make_control_relations (atk_obj, priv-&gt;val_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> make_control_relations (atk_obj, priv-&gt;red_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> make_control_relations (atk_obj, priv-&gt;green_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> make_control_relations (atk_obj, priv-&gt;blue_spinbutton);</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-30e8a4.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-30e8a4.html
new file mode 100644
index 0000000..0271416
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-30e8a4.html
@@ -0,0 +1,4660 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-item.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-desktop-item.c -->
+
+<!-- FILENAME mate-desktop-item.c -->
+
+<!-- FUNCTIONNAME escape_string_and_dup -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 30e8a45327380593b882af8bc5c8adf1 -->
+
+<!-- BUGLINE 3121 -->
+
+<!-- BUGCOLUMN 9 -->
+
+<!-- BUGPATHLENGTH 27 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-desktop-item.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 3121, column 9</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-item.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-item.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"811": 1, "812": 1, "813": 1, "814": 1, "815": 1, "816": 1, "817": 1, "819": 1, "824": 1, "827": 1, "829": 1, "837": 1, "3099": 1, "3100": 1, "3101": 1, "3102": 1, "3103": 1, "3104": 1, "3106": 1, "3109": 1, "3110": 1, "3111": 1, "3112": 1, "3114": 1, "3115": 1, "3116": 1, "3117": 1, "3118": 1, "3119": 1, "3120": 1, "3121": 1, "3131": 1, "3132": 1, "3133": 1, "3134": 1, "3138": 1, "3816": 1, "3817": 1, "3818": 1, "3819": 1, "3820": 1, "3821": 1, "3823": 1, "3824": 1, "3825": 1, "3826": 1, "3829": 1, "3830": 1, "3831": 1, "3832": 1, "3833": 1, "3834": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 61,59,55,50,49,46,44,41,39,36,34,33,28,25,23,22,19,17,16,12,8,5,5,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; c-set-style: linux indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/* mate-desktop-item.c - MATE Desktop File Representation</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>Copyright (C) 1999, 2000 Red Hat Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>Copyright (C) 2001 Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>All rights reserved.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>This file is part of the Mate Library.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>Developed by Elliot Lee &lt;[email protected]&gt; and Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>The Mate Library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>The Mate Library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>License along with the Mate Library; see the file COPYING.LIB. If not,</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>Boston, MA 02110-1301, USA. */</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>@NOTATION@</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;limits.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;ctype.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define SN_API_NOT_YET_FROZEN</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;libsn/sn.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#undef MATE_DISABLE_DEPRECATED</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include &lt;mate-desktop-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _MateDesktopItem {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>int</span> refcount;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='comment'>/* all languages used */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList *languages;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> MateDesktopItemType type;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>/* `modified' means that the ditem has been</span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>* modified since the last save. */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gboolean modified;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Keys of the main section only */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GList *sections;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* This includes ALL keys, including</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>* other sections, separated by '/' */</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GHashTable *main_hash;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>char</span> *location;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='comment'>/* If mtime is set to this, set_location won't update mtime,</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='comment'>* this is to be used internally only. */</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='directive'>#define <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span> ((gint64)-2)</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">} Section;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> ENCODING_UNKNOWN,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> ENCODING_UTF8,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> ENCODING_LEGACY_MIXED</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">} Encoding;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* IO reading utils, that look like the libc buffered io stuff</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='directive'>#define <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span> (32 * 1024)</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>char</span> *buf;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> gboolean buf_needs_free;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gboolean past_first_read;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gboolean eof;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> guint64 size;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">} ReadBuf;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> gboolean ditem_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_desktop_item_set_location_gfile (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> GFile *file);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">readbuf_getc (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;eof)</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> rb-&gt;pos == rb-&gt;size) {</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> gssize bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> bytes_read = 0;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> bytes_read = g_input_stream_read (<span class='macro'>G_INPUT_STREAM (rb-&gt;stream)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_input_stream_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> rb-&gt;buf,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='comment'>/* FIXME: handle errors other than EOF */</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (bytes_read &lt;= 0) {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> rb-&gt;eof = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size != 0)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> rb-&gt;past_first_read = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> rb-&gt;size = bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> (guchar) rb-&gt;buf[rb-&gt;pos++];</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='comment'>/* Note, does not include the trailing \n */</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">readbuf_gets (<span class='keyword'>char</span> *buf, gsize bufsize, ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='macro'>g_return_val_if_fail (buf != NULL, NULL)<span class='macro_popup'>do { if ((buf != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "buf != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>g_return_val_if_fail (rb != NULL, NULL)<span class='macro_popup'>do { if ((rb != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rb != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> buf[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> c = readbuf_getc (rb);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> || c == '\n')</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> buf[pos++] = c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> } <span class='keyword'>while</span> (pos &lt; bufsize-1);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; pos == 0)</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> buf[pos++] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='keyword'>return</span> buf;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">readbuf_open (GFile *file, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> stream = g_file_read (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error reading file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error reading file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> rb-&gt;stream = stream;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> rb-&gt;file = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> rb-&gt;uri = uri;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> rb-&gt;buf = g_malloc (<span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> rb-&gt;buf_needs_free = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='comment'>/* rb-&gt;size = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">readbuf_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri, <span class='keyword'>const</span> <span class='keyword'>char</span> *string, gssize length)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= 0, NULL)<span class='macro_popup'>do { if ((length &gt;= 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>/* rb-&gt;file = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* rb-&gt;stream = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> rb-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> rb-&gt;buf = (<span class='keyword'>char</span> *) string;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>/* rb-&gt;buf_needs_free = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> rb-&gt;size = length;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">readbuf_rewind (ReadBuf *rb, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> rb-&gt;eof = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (!rb-&gt;past_first_read)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> rb-&gt;size = 0;</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (g_seekable_seek (<span class='macro'>G_SEEKABLE (rb-&gt;stream)<span class='macro_popup'>((((GSeekable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_seekable_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> 0, G_SEEK_SET, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> rb-&gt;stream = g_file_read (rb-&gt;file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> g_set_error (</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> error, <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error rewinding file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error rewinding file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> rb-&gt;uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line">readbuf_close (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_object_unref (rb-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g_free (rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;buf_needs_free)</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (rb-&gt;buf);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> g_free (rb);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">type_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *type)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>switch</span> (type [0]) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>case</span> 'A':</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Application"</span>))</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>case</span> 'L':</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Link"</span>))</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_LINK;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"FSDevice"</span>))</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> 'M':</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"MimeType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Directory"</span>))</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> 'S':</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Service"</span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"ServiceType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_OTHER;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* mate_desktop_item_new:</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='comment'>* Creates a MateDesktopItem object. The reference count on the returned value is set to '1'.</span></td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* Returns: The new MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">mate_desktop_item_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> retval = <span class='macro'>g_new0 (MateDesktopItem, 1)<span class='macro_popup'>((MateDesktopItem *) g_malloc0_n ((1), sizeof (MateDesktopItem<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> retval-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* These are guaranteed to be set */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned</span></td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>* here is the name of an application or</span></td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>* a document */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No name"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No name"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='string_literal'>"1.0"</span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> retval-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">dup_section (Section *sec)</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> Section *retval = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> retval-&gt;name = <span class='macro'>g_strdup (sec-&gt;name)<span class='macro_popup'>g_strdup_inline (sec-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> retval-&gt;keys = g_list_copy (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">copy_string_hash (gpointer key, gpointer value, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GHashTable *copy = user_data;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> g_hash_table_replace (copy,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>* mate_desktop_item_copy:</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='comment'>* @item: The item to be copied</span></td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* Creates a copy of a MateDesktopItem. The new copy has a refcount of 1.</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* Note: Section stack is NOT copied.</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='comment'>* Returns: The new copy</span></td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">mate_desktop_item_copy (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> retval = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> retval-&gt;type = item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> retval-&gt;modified = item-&gt;modified;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> retval-&gt;location = <span class='macro'>g_strdup (item-&gt;location)<span class='macro_popup'>g_strdup_inline (item-&gt;location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> retval-&gt;mtime = item-&gt;mtime;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> retval-&gt;launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='comment'>/* Languages */</span></td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> retval-&gt;languages = g_list_copy (item-&gt;languages);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='comment'>/* Keys */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> retval-&gt;keys = g_list_copy (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>/* Sections */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> retval-&gt;sections = g_list_copy (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> li-&gt;data = dup_section (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> g_hash_table_foreach (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> copy_string_hash,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> retval-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line">read_sort_order (MateDesktopItem *item, GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>char</span> buf[<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".order"</span>);</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> rb = readbuf_open (child, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>if</span> (str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> str = g_string_new (buf);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>g_string_append (str, buf)<span class='macro_popup'>(__builtin_constant_p (buf) ? __extension__ ({ const char * const<br> __val = (buf); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, buf, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='macro'>g_string_append_c (str, ';')<span class='macro_popup'>g_string_append_c_inline (str, ';')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> mate_desktop_item_set_string (item, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>g_string_free (str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free<br>) ((str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line">make_fake_directory (GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> mate_desktop_item_set_entry_type (item,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> MATE_DESKTOP_ITEM_TYPE_DIRECTORY);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> item-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>; <span class='comment'>/* it doesn't exist, we know that */</span></td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> mate_desktop_item_set_location_gfile (item, child);</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> read_sort_order (item, dir);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_file:</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>* @file: The filename or directory path to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>* This function loads 'file' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">mate_desktop_item_new_from_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *file,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> retval = mate_desktop_item_new_from_gfile (gfile, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* @uri: URI to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* This function loads 'uri' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">mate_desktop_item_new_from_uri (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((uri != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> retval = mate_desktop_item_new_from_gfile (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line">mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> GFile *subfn;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> GFile *parent;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gint64 mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span><span class='string_literal'>","</span><span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp; type != G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_INVALID_TYPE,</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"File '%s' is not a regular file or directory."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "File '%s' is not a regular file or directory."<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> uri);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> GFileInfo *child_info;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> child = g_file_get_child (file, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> child_info = g_file_query_info (child,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>if</span> (child_info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> make_fake_directory (file);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (child_info,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_object_unref (child_info);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> subfn = child;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> subfn = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> rb = readbuf_open (subfn, error);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> ! mate_desktop_item_exists (retval)) {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> mate_desktop_item_unref (retval);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> retval-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> mate_desktop_item_set_location_gfile (retval, subfn);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> retval-&gt;mtime = mtime;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> parent = g_file_get_parent (file);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (parent != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> read_sort_order (retval, parent);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* @string: string to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>* @length: length of string, or -1 to use strlen</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* @error: place to put errors</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='comment'>* This function turns the contents of the string into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">mate_desktop_item_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> gssize length,</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= -1, NULL)<span class='macro_popup'>do { if ((length &gt;= -1)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= -1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (length == -1) {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> length = strlen (string);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> rb = readbuf_new_from_string (uri, string, length);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>/* FIXME: Sort order? */</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">lookup_desktop_file_in_data_dir (<span class='keyword'>const</span> <span class='keyword'>char</span> *desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> path = g_build_filename (data_dir, <span class='string_literal'>"applications"</span>, desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (path, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">file_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *user_data_dir;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>char</span> *retval;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> user_data_dir = g_get_user_data_dir ();</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, user_data_dir))) {</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>for</span> (i = 0; system_data_dirs[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, system_data_dirs[i]))) {</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_basename:</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='comment'>* @basename: The basename of the MateDesktopItem to load.</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='comment'>* This function loads 'basename' from a system data directory and</span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='comment'>* returns its MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">mate_desktop_item_new_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> <span class='keyword'>char</span> *file;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='macro'>g_return_val_if_fail (basename != NULL, NULL)<span class='macro_popup'>do { if ((basename != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "basename != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!(file = file_from_basename (basename))) {</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Cannot find file '%s'"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Cannot find file '%s'"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> basename);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> retval = mate_desktop_item_new_from_file (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> g_free (file);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>* mate_desktop_item_save:</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='comment'>* @under: A new uri (location) for this #MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='comment'>* @force: Save even if it wasn't modified</span></td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='comment'>* @error: #GError return</span></td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='comment'>* Writes the specified item to disk. If the 'under' is NULL, the original</span></td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='comment'>* location is used. It sets the location of this entry to point to the</span></td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>* new location.</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>* Returns: boolean. %TRUE if the file was saved, %FALSE otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">mate_desktop_item_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *under,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> gboolean force,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span id="start60"><span class='keyword'>const</span></span> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span id="start59"><span id="end60"><span class='keyword'>if</span></span></span> (<span id="start58"><span class="mrange"><span id="end59">under</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'under' is not equal to NULL</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> ! force &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> ! item-&gt;modified)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span id="start57"><span id="end58"><span class='keyword'>if</span></span></span> (<span id="start56"><span id="end57"><span class='variable'>under<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>1.1</div></td><td>'under' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> uri = item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span id="start53"><span id="end54"><span id="start55"><span id="end56">uri</span></span></span></span> = <span id="start54"><span id="end55">under</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span id="start52"><span id="end53"><span class='keyword'>if</span></span></span> (<span id="start51"><span id="end52"><span class='variable'>uri<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>2.1</div></td><td>'uri' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_FILENAME,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No filename to save to"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No filename to save to"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span id="start50"><span id="end51"><span class='keyword'>if</span></span></span> ( ! <span class="mrange"><span id="end49">ditem_save</span> (<span id="start49"><span id="end50">item</span></span>, uri, error)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'ditem_save'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> item-&gt;mtime = g_get_real_time () / <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>* mate_desktop_item_ref:</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='comment'>* Description: Increases the reference count of the specified item.</span></td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='comment'>* Returns: the newly referenced @item</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line">mate_desktop_item_ref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line">free_section (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> Section *section = data;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_free (section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> section-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_list_free_full (section-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> g_free (section);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='comment'>* mate_desktop_item_unref:</span></td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='comment'>* Decreases the reference count of the specified item, and destroys the item if there are no more references left.</span></td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">mate_desktop_item_unref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> item-&gt;refcount--;</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>if</span>(item-&gt;refcount != 0)</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_list_free_full (item-&gt;languages, g_free);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> item-&gt;languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> g_list_free_full (item-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> g_list_free_full (item-&gt;sections, (GDestroyNotify) free_section);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> item-&gt;sections = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> g_hash_table_destroy (item-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> item-&gt;main_hash = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> item-&gt;location = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_free (item);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line">find_section (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (strcmp (section, <span class='string_literal'>"Desktop Entry"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> sec = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>if</span> (strcmp (sec-&gt;name, section) == 0)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> sec = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> sec-&gt;name = <span class='macro'>g_strdup (section)<span class='macro_popup'>g_strdup_inline (section)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> item-&gt;sections = g_list_append (item-&gt;sections, sec);</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='comment'>/* Don't mark the item modified, this is just an empty section,</span></td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='comment'>* it won't be saved even */</span></td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line">section_from_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (key == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> p = strchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> name = g_strndup (key, p - key);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> sec = find_section (item, name);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line">key_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>char</span> *p = strrchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='keyword'>return</span> p+1;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span> key;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">lookup (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line">lookup_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='keyword'>return</span> lookup (item, key);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> ret = lookup (item, full);</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">lookup_best_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> ret = lookup_locale (item, key, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>if</span> (ret != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line">set (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> Section *sec = section_from_key (item, key);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (sec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> sec-&gt;keys = g_list_append</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> (sec-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>g_strdup (key_basename (key))<span class='macro_popup'>g_strdup_inline (key_basename (key))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (sec-&gt;keys, key_basename (key),</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> sec-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> g_list_delete_link (sec-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> item-&gt;keys = g_list_append (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> (item-&gt;keys, key, (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> item-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> g_list_delete_link (item-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line">set_locale (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> set (item, key, value);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> set (item, full, value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='comment'>/* add the locale to the list of languages if it wasn't there</span></td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* before */</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> item-&gt;languages = g_list_prepend (item-&gt;languages,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>g_strdup (locale)<span class='macro_popup'>g_strdup_inline (locale)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">list_to_vector (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='keyword'>int</span> len = g_slist_length (list);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> argv = <span class='macro'>g_new0 (<span class='keyword'>char</span> *, len+1)<span class='macro_popup'>((char * *) g_malloc0_n ((len+1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>for</span> (i = 0, li = list;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> li = li-&gt;next, i++) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> argv[i] = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> argv[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>return</span> argv;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">make_args (GList *files)</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> GSList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class='keyword'>for</span> (li = files; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *file = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> gfile = g_file_new_for_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> list = g_slist_prepend (list, gfile);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>return</span> g_slist_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line">free_args (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>for</span> (li = list; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_unref (<span class='macro'>G_FILE (li-&gt;data)<span class='macro_popup'>((((GFile*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((li-&gt;data)), ((g_file_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">escape_single_quotes (<span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> gboolean in_double_quotes)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GString *gs;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *pre = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *post = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; ! in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> pre = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> post = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> pre = <span class='string_literal'>"\"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> post = <span class='string_literal'>"'\""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (strchr (s, '\'') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='keyword'>return</span> g_strconcat (pre, s, post, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gs = g_string_new (pre);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (*p == '\'')</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>g_string_append (gs, <span class='string_literal'>"'\\''"</span>)<span class='macro_popup'>(__builtin_constant_p ("'\\''") ? __extension__ ({ const char<br> * const __val = ("'\\''"); g_string_append_len_inline (gs, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (gs, "'\\''"<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='macro'>g_string_append (gs, post)<span class='macro_popup'>(__builtin_constant_p (post) ? __extension__ ({ const char * const<br> __val = (post); g_string_append_len_inline (gs, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (gs, post, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> URI_TO_LOCAL_BASENAME</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">} ConversionType;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line">convert_uri (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> ConversionType conversion)</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>switch</span> (conversion) {</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>case</span> URI_TO_STRING:</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> retval = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_PATH:</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> retval = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_DIRNAME:</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='keyword'>char</span> *local_path;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> local_path = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> retval = g_path_get_dirname (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_BASENAME:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> retval = g_file_get_basename (file);</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-desktop-item.c"<br>, 1203, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> ADDED_NONE = 0,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> ADDED_SINGLE,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> ADDED_ALL</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line">} AddedStatus;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line">append_all_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='keyword'>for</span> (l = args; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>char</span> *converted;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (!(converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>" "</span>)<span class='macro_popup'>(__builtin_constant_p (" ") ? __extension__ ({ const char * const<br> __val = (" "); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, " ", (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> escaped = escape_single_quotes (converted,</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>return</span> ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">append_first_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>char</span> *converted = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>for</span> (l = *arg_ptr; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>if</span> ((converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> *arg_ptr = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (!converted)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>return</span> added_status;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> escaped = escape_single_quotes (converted, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> added_status != ADDED_ALL ? ADDED_SINGLE : added_status;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">do_percent_subst (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *arg,</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> <span class='keyword'>char</span> *esc;</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cs;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>if</span> (arg[0] != '%' || arg[1] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='keyword'>switch</span> (arg[1]) {</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='keyword'>case</span> '%':</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>case</span> 'U':</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>case</span> 'N':</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> <span class='keyword'>case</span> 'f':</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> 'u':</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>case</span> 'd':</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>case</span> 'm':</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says this is deprecated</span></td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> <span class='comment'>* and replace with --miniicon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_MINI_ICON<span class='macro_popup'>"MiniIcon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--miniicon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--miniicon=") ? __extension__ ({ const<br> char * const __val = ("--miniicon="); g_string_append_len_inline<br> (str, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "--miniicon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>case</span> 'i':</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says replace with --icon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--icon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--icon=") ? __extension__ ({ const char<br> * const __val = ("--icon="); g_string_append_len_inline (str<br>, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !<br>(__val))) : (gssize) -1); }) : g_string_append_len_inline (str<br>, "--icon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='keyword'>case</span> 'c':</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>case</span> 'k':</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> esc = escape_single_quotes (item-&gt;location, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>case</span> 'v':</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_DEV<span class='macro_popup'>"Dev"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='comment'>/* Maintain special characters - e.g. "%20" */</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_ascii_isdigit (arg [1])<span class='macro_popup'>((g_ascii_table[(guchar) (arg [1])] &amp; G_ASCII_DIGIT) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line">expand_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> gboolean escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> gboolean single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> gboolean double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> GString *gs = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (escape) {</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\\') {</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot)</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> escape = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\'') {</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> single_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (single_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '"') {</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> double_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '%') {</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='keyword'>if</span> (do_percent_subst (item, p, gs,</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> single_quot, double_quot,</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> args, arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> added_status)) {</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"><span class='comment'>/*Functions in this code block should only ever be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line">sn_error_trap_push (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line">sn_error_trap_pop (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line">make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>int</span> i, j;</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>int</span> desktop_startup_id_len;</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, i + 2)<span class='macro_popup'>((char * *) g_malloc_n ((i + 2), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> desktop_startup_id_len = strlen (<span class='string_literal'>"DESKTOP_STARTUP_ID"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='keyword'>for</span> (i = 0, j = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp[i], <span class='string_literal'>"DESKTOP_STARTUP_ID"</span>, desktop_startup_id_len) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> retval[j] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> retval[j] = g_strdup_printf (<span class='string_literal'>"DESKTOP_STARTUP_ID=%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> sn_launcher_context_get_startup_id (sn_context));</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> retval[j] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"><span class='comment'>/* This should be fairly long, as it's confusing to users if a startup</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='comment'>* ends when it shouldn't (it appears that the startup failed, and</span></td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='comment'>* they have to relaunch the app). Also the timeout only matters when</span></td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> <span class='comment'>* there are bugs and apps don't end their own startup sequence.</span></td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>* This timeout is a "last resort" timeout that ignores whether the</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* startup sequence has shown activity or not. Marco and the</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>* tasklist have smarter, and correspondingly able-to-be-shorter</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='comment'>* timeouts. The reason our timeout is dumb is that we don't monitor</span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='comment'>* the sequence (don't use an SnMonitorContext)</span></td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> 30 /* seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span> (<span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> * 1000)</span></td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> GSList *contexts;</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> guint timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line">} StartupTimeoutData;</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">free_startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> g_slist_free_full (std-&gt;contexts, (GDestroyNotify) sn_launcher_context_unref);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (std-&gt;timeout_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_source_remove (std-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> g_free (std);</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line">startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GSList *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> <span class='keyword'>int</span> min_timeout;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> min_timeout = <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> gint64 now = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> GTimeVal now;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> g_get_current_time (&amp;now);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> tmp = std-&gt;contexts;</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>while</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> SnLauncherContext *sn_context = tmp-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> GSList *next = tmp-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> time_t tv_sec;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> suseconds_t tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context, &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> tv = (tv_sec * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>) + tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> elapsed = (<span class='keyword'>double</span>) (now - tv) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>long</span> tv_sec, tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> elapsed =</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> ((((<span class='keyword'>double</span>)now.tv_sec - tv_sec) * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span> +</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> (now.tv_usec - tv_usec))) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (elapsed &gt;= <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> std-&gt;contexts = g_slist_remove (std-&gt;contexts,</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> sn_launcher_context_complete (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> min_timeout = <span class='macro'>MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed))<span class='macro_popup'>(((min_timeout) &lt; (((30 * 1000) - elapsed))) ? (min_timeout<br>) : (((30 * 1000) - elapsed)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> tmp = next;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='comment'>/* we'll use seconds for the timeout */</span></td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> <span class='keyword'>if</span> (min_timeout &lt; 1000)</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> min_timeout = 1000;</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> <span class='keyword'>if</span> (std-&gt;contexts == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> std-&gt;timeout_id = g_timeout_add_seconds (min_timeout / 1000,</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> std);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>/* always remove this one, but we may have reinstalled another one. */</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line">add_startup_timeout (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> SnLauncherContext *sn_context)</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> StartupTimeoutData *data;</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> data = g_object_get_data (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> data = <span class='macro'>g_new (StartupTimeoutData, 1)<span class='macro_popup'>((StartupTimeoutData *) g_malloc_n ((1), sizeof (StartupTimeoutData<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> data-&gt;screen = screen;</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> data-&gt;contexts = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> data-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> data, free_startup_timeout);</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> sn_launcher_context_ref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> data-&gt;contexts = g_slist_prepend (data-&gt;contexts, sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> <span class='keyword'>if</span> (data-&gt;timeout_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> data-&gt;timeout_id = g_timeout_add_seconds (</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION - functions should only be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">stringify_uris (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> append_all_converted (str, URI_TO_STRING, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line">stringify_files (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> append_all_converted (str, URI_TO_LOCAL_PATH, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line">make_environment_for_screen (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>char</span> *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='keyword'>int</span> display_index = -1;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> <span class='keyword'>int</span> i, env_len;</td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> <span class='macro'>g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((screen)); GType __t = ((gdk_screen_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "GDK_IS_SCREEN (screen)"); return (((void*)0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp [i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> <span class='keyword'>for</span> (env_len = 0; envp [env_len]; env_len++)</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp [env_len], <span class='string_literal'>"DISPLAY"</span>, strlen (<span class='string_literal'>"DISPLAY"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> display_index = env_len;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, env_len + 1)<span class='macro_popup'>((char * *) g_malloc_n ((env_len + 1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> retval [env_len] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> display_name = <span class='macro'>g_strdup (gdk_display_get_name (display))<span class='macro_popup'>g_strdup_inline (gdk_display_get_name (display))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; env_len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (i == display_index)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> retval [i] = g_strconcat (<span class='string_literal'>"DISPLAY="</span>, display_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> retval [i] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='macro'>g_assert (i == env_len)<span class='macro_popup'>do { if (i == env_len) ; else g_assertion_message_expr ("MateDesktop"<br>, "mate-desktop-item.c", 1728, ((const char*) (__func__)), "i == env_len"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> g_free (display_name);</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line">dummy_child_watch (GPid pid,</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> gint status,</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='comment'>/* Nothing, this is just to ensure we don't double fork</span></td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='comment'>* and break pkexec:</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=675789</span></td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">ditem_execute (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec,</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> gboolean launch_only_one,</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> gboolean use_current_dir,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> gboolean append_uris,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gboolean append_paths,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> gboolean do_not_reap_child,</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span class='keyword'>char</span> **free_me = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> <span class='keyword'>char</span> **real_argv;</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>int</span> i, ret;</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='keyword'>char</span> **term_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='keyword'>int</span> term_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> GSList *vector_list;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> GSList *args, *arg_ptr;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> AddedStatus added_status;</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>char</span> **temp_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='keyword'>int</span> temp_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='keyword'>char</span> *new_exec, *uris, *temp;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='keyword'>char</span> *exec_locale;</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='keyword'>int</span> launched = 0;</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> GPid pid;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> SnLauncherContext *sn_context;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> SnDisplay *sn_display;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *startup_class;</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> <span class='macro'>g_return_val_if_fail (item, -1)<span class='macro_popup'>do { if ((item)) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "item"); return (-1); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> working_dir = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_PATH<span class='macro_popup'>"Path"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='keyword'>if</span> (working_dir &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> !g_file_test (working_dir, G_FILE_TEST_IS_DIR))</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span class='keyword'>if</span> (working_dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !use_current_dir)</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> working_dir = g_get_home_dir ();</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span class='keyword'>if</span> (mate_desktop_item_get_boolean (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *options =</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL_OPTIONS<span class='macro_popup'>"TerminalOptions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> <span class='keyword'>if</span> (options != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_shell_parse_argv (options,</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> &amp;term_argc,</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> &amp;term_argv,</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> <span class='comment'>/* error */</span>);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='comment'>/* ignore errors */</span></td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> mate_desktop_prepend_terminal_to_vector (&amp;term_argc, &amp;term_argv);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> args = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> arg_ptr = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> <span class='keyword'>if</span> (screen)</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> sn_display = sn_display_new (<span class='macro'>GDK_DISPLAY_XDISPLAY (gdkdisplay)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdkdisplay))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> sn_error_trap_push,</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> sn_error_trap_pop);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='comment'>/* Only initiate notification if desktop file supports it.</span></td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='comment'>* (we could avoid setting up the SnLauncherContext if we aren't going</span></td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='comment'>* to initiate, but why bother)</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> startup_class = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"StartupWMClass"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> <span class='keyword'>if</span> (startup_class ||</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> mate_desktop_item_get_boolean (item, <span class='string_literal'>"StartupNotify"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> sn_context = sn_launcher_context_new (sn_display,</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> screen ? gdk_x11_screen_get_screen_number (screen) :</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> <span class='macro'>DefaultScreen (GDK_DISPLAY_XDISPLAY (gdkdisplay))<span class='macro_popup'>(((_XPrivDisplay)((gdk_x11_display_get_xdisplay (gdkdisplay))<br>))-&gt;default_screen)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_GENERIC_NAME<span class='macro_popup'>"GenericName"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> <span class='keyword'>if</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='keyword'>char</span> *description;</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> sn_launcher_context_set_name (sn_context, name);</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> description = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Starting %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Starting %s"))</span></span>, name);</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> sn_launcher_context_set_description (sn_context, description);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> g_free (description);</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> icon = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>if</span> (icon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> sn_launcher_context_set_icon_name (sn_context, icon);</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> sn_launcher_context_set_workspace (sn_context, workspace);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (startup_class != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> sn_launcher_context_set_wmclass (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> startup_class);</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> sn_display = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> <span class='keyword'>if</span> (screen) {</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> envp = make_environment_for_screen (screen, envp);</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> exec_locale = g_filename_from_utf8 (exec, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> <span class='keyword'>if</span> (exec_locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> exec_locale = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> added_status = ADDED_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> new_exec = expand_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> exec_locale,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> args, &amp;arg_ptr, &amp;added_status);</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_uris) {</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> uris = stringify_uris (args);</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> <span class='comment'>/* append_uris and append_paths are mutually exlusive */</span></td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_paths) {</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> uris = stringify_files (args);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> <span class='keyword'>if</span> (launched &gt; 0 &amp;&amp; added_status == ADDED_NONE) {</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (new_exec,</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> &amp;temp_argc, &amp;temp_argv, error)) {</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> <span class='comment'>/* The error now comes from g_shell_parse_argv */</span></td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> vector_list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; term_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='macro'>g_strdup (term_argv[i])<span class='macro_popup'>g_strdup_inline (term_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; temp_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> <span class='macro'>g_strdup (temp_argv[i])<span class='macro_popup'>g_strdup_inline (temp_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> g_strfreev (temp_argv);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> real_argv = list_to_vector (vector_list);</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_slist_free_full (vector_list, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span class='keyword'>if</span> (sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> !sn_launcher_context_get_initiated (sn_context)) {</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> <span class='comment'>/* This means that we always use the first real_argv[0]</span></td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> <span class='comment'>* we select for the "binary name", but it's probably</span></td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='comment'>* OK to do that. Binary name isn't super-important</span></td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> <span class='comment'>* anyway, and we can't initiate twice, and we</span></td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> <span class='comment'>* must initiate prior to fork/exec.</span></td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> sn_launcher_context_set_binary_name (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> real_argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='keyword'>if</span> (item-&gt;launch_time &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> launch_time = gdk_x11_display_get_user_time (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> sn_launcher_context_initiate (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> g_get_prgname () ? g_get_prgname () : <span class='string_literal'>"unknown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> real_argv[0],</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> launch_time);</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='comment'>/* Don't allow accidental reuse of same timestamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> ((MateDesktopItem *)item)-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> envp = make_spawn_environment_for_sn_context (sn_context, envp);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span class='keyword'>if</span> ( ! g_spawn_async (working_dir,</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> real_argv,</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> envp,</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH <span class='comment'>/* flags */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func */</span></td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func_data */</span></td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> (do_not_reap_child ? &amp;pid : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='comment'>/* child_pid */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> error)) {</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='comment'>/* The error was set for us,</span></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='comment'>* we just can't launch this thingie */</span></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (do_not_reap_child) {</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> g_child_watch_add (pid, dummy_child_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> launched ++;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> <span class='keyword'>if</span> (arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> arg_ptr = arg_ptr-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> <span class='comment'>/* rinse, repeat until we run out of arguments (That</span></td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> <span class='comment'>* is if we were adding singles anyway) */</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> } <span class='keyword'>while</span> (added_status == ADDED_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> ! launch_only_one);</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_free (exec_locale);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> <span class='keyword'>if</span> ((sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)){</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> sn_launcher_context_complete (sn_context); <span class='comment'>/* end sequence */</span></td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> add_startup_timeout (screen ? screen :</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> gdk_display_get_default_screen (gdk_display_get_default ()),</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> sn_display_unref (sn_display);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION */</span></td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> free_args (args);</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>if</span> (term_argv)</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> g_strfreev (term_argv);</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"><span class='comment'>/* strip any trailing &amp;, return FALSE if bad things happen and</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='comment'>we end up with an empty string */</span></td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">strip_the_amp (<span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> size_t exec_len;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> <span class='macro'>g_strstrip (exec)<span class='macro_popup'>g_strchomp (g_strchug (exec))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> exec_len = strlen (exec);</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='comment'>/* kill any trailing '&amp;' */</span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='keyword'>if</span> (exec[exec_len-1] == '&amp;') {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> exec[exec_len-1] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> g_strchomp (exec);</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='comment'>/* can't exactly launch an empty thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>char</span> *the_exec;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> exec = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='comment'>/* This is a URL, so launch it as a url */</span></td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *url;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> url = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> <span class='comment'>/* Mate panel used to put this in Exec */</span></td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0'))</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> url = exec;</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0')) {</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_URL,</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No URL to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No URL to launch"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> retval = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> url,</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> <span class='macro'>GDK_CURRENT_TIME<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='keyword'>return</span> retval ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='comment'>/* check the type, if there is one set */</span></td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type != MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NOT_LAUNCHABLE,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Not a launchable item"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Not a launchable item"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> exec[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='comment'>/* make a new copy and get rid of spaces */</span></td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> the_exec = <span class='macro'>g_alloca (strlen (exec) + 1)<span class='macro_popup'>__builtin_alloca (strlen (exec) + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> g_strlcpy (the_exec, exec, strlen (exec) + 1);</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> ( ! strip_the_amp (the_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_BAD_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Bad command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Bad command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> ret = ditem_execute (item, the_exec, file_list, screen, workspace, envp,</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_ONLY_ONE),</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_USE_CURRENT_DIR),</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_URIS),</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_PATHS),</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_DO_NOT_REAP_CHILD),</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='comment'>* mate_desktop_item_launch:</span></td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='comment'>* This function runs the program listed in the specified 'item',</span></td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>* optionally appending additional arguments to its command line. It uses</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* #g_shell_parse_argv to parse the the exec string into a vector which is</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>* then passed to #g_spawn_async for execution. This can return all</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* the errors from MateURL, #g_shell_parse_argv and #g_spawn_async,</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* in addition to it's own. The files are</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* only added if the entry defines one of the standard % strings in it's</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>* Exec field.</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line">mate_desktop_item_launch (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> item, file_list, flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> <span class='comment'>* @envp: child's environment, or %NULL to inherit parent's</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line">mate_desktop_item_launch_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_on_screen:</span></td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span class='comment'>* @screen: the %GdkScreen on which the application should be launched</span></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span class='comment'>* @workspace: the workspace on which the app should be launched (-1 for current)</span></td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* additionally attempts to launch the application on a given screen</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>* and workspace.</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">mate_desktop_item_launch_on_screen (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> screen, workspace, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='comment'>* mate_desktop_item_drop_uri_list:</span></td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>* A list of files or urls dropped onto an icon, the proper (Url or File)</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> <span class='comment'>* exec is run you can pass directly string that you got as the</span></td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> <span class='comment'>* text/uri-list. This just parses the list and calls</span></td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line">mate_desktop_item_drop_uri_list (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_drop_uri_list_with_env (item, uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"><span class='comment'>* mate_desktop_item_drop_uri_list_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"><span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"><span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"><span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>* @envp: child's environment</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"><span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"><span class='comment'>* See mate_desktop_item_drop_uri_list for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"><span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"><span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"><span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"><span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line">mate_desktop_item_drop_uri_list_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='keyword'>char</span> **uris;</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> uris = g_uri_list_extract_uris (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='keyword'>for</span> (uri = uris[0]; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; uri++) {</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> list = g_list_prepend (list, uri);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> list = g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> ret = mate_desktop_item_launch_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> item, list, flags, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> g_strfreev (uris);</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> g_list_free (list);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line">exec_exists (<span class='keyword'>const</span> <span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='keyword'>if</span> (g_path_is_absolute (exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='keyword'>if</span> (access (exec, <span class='macro'>X_OK<span class='macro_popup'>1</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>char</span> *tryme;</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> tryme = g_find_program_in_path (exec);</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> <span class='keyword'>if</span> (tryme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> g_free (tryme);</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> <span class='comment'>* mate_desktop_item_exists:</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* Attempt to figure out if the program that can be executed by this item</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>* actually exists. First it tries the TryExec attribute to see if that</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* contains a program that is in the path. Then if there is no such</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>* attribute, it tries the first word of the Exec attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> <span class='comment'>* Returns: A boolean, %TRUE if it exists, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">mate_desktop_item_exists (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *try_exec;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> try_exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TRY_EXEC<span class='macro_popup'>"TryExec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> <span class='keyword'>if</span> (try_exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> ! exec_exists (try_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exe;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (exec, &amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='keyword'>if</span> (argc &lt; 1) {</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> exe = argv[0];</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> <span class='keyword'>if</span> ( ! exec_exists (exe)) {</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> <span class='comment'>* mate_desktop_item_get_entry_type:</span></td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='comment'>* Gets the type attribute (the 'Type' field) of the item. This should</span></td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> <span class='comment'>* usually be 'Application' for an application, but it can be 'Directory'</span></td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='comment'>* for a directory description. There are other types available as well.</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> <span class='comment'>* The type usually indicates how the desktop item should be handeled and</span></td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='comment'>* how the 'Exec' field should be handeled.</span></td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='comment'>* Returns: The type of the specified 'item'. The returned</span></td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='comment'>* memory remains owned by the MateDesktopItem and should not be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line">MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line">mate_desktop_item_get_entry_type (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, 0)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>return</span> item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line">mate_desktop_item_set_entry_type (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> MateDesktopItemType type)</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> item-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_NULL:</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION:</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Application"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_LINK:</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE:</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"FSDevice"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"MimeType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY:</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE:</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Service"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"ServiceType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> <span class='comment'>* mate_desktop_item_get_file_status:</span></td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='comment'>* This function checks the modification time of the on-disk file to</span></td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> <span class='comment'>* see if it is more recent than the in-memory data.</span></td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> <span class='comment'>* Returns: An enum value that specifies whether the item has changed since being loaded.</span></td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line">MateDesktopItemStatus</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line">mate_desktop_item_get_file_status (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> MateDesktopItemStatus retval;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> retval = MATE_DESKTOP_ITEM_UNCHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_has_attribute (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> retval = MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (((guint64) item-&gt;mtime) &lt; g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> retval = MATE_DESKTOP_ITEM_CHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='comment'>* mate_desktop_item_find_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> <span class='comment'>* @icon: icon name, something you'd get out of the Icon key</span></td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>* @desired_size: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='comment'>* is not an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line">mate_desktop_item_find_icon (GtkIconTheme *icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon,</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='keyword'>int</span> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='keyword'>int</span> flags)</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> GtkIconInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='keyword'>char</span> *full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='macro'>g_return_val_if_fail (icon_theme == NULL ||<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='macro'>GTK_IS_ICON_THEME (icon_theme), NULL)<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || strcmp(icon,<span class='string_literal'>""</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_path_is_absolute (icon)) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> <span class='keyword'>if</span> (g_file_test (icon, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> <span class='keyword'>char</span> *icon_no_extension;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='keyword'>if</span> (icon_theme == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> icon_theme = gtk_icon_theme_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> icon_no_extension = <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> p = strrchr (icon_no_extension, '.');</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='keyword'>if</span> (p &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> (strcmp (p, <span class='string_literal'>".png"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> strcmp (p, <span class='string_literal'>".xpm"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> strcmp (p, <span class='string_literal'>".svg"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> *p = 0;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> info = gtk_icon_theme_lookup_icon (icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> icon_no_extension,</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> full = <span class='macro'>g_strdup (gtk_icon_info_get_filename (info))<span class='macro_popup'>g_strdup_inline (gtk_icon_info_get_filename (info))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> g_free (icon_no_extension);</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='keyword'>return</span> full;</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> <span class='comment'>* mate_desktop_item_get_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* is not set as an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line">mate_desktop_item_get_icon (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> GtkIconTheme *icon_theme)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='comment'>/* maybe this function should be deprecated in favour of find icon</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> <span class='comment'>* -George */</span></td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> icon = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_find_icon (icon_theme, icon,</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> 48 <span class='comment'>/* desired_size */</span>,</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> 0 <span class='comment'>/* flags */</span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* mate_desktop_item_get_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Returns: The file location associated with 'item'.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">mate_desktop_item_get_location (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>return</span> item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='comment'>* @location: A uri string specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item.</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line">mate_desktop_item_set_location (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *location)</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> strcmp (item-&gt;location, location) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> item-&gt;location = <span class='macro'>g_strdup (location)<span class='macro_popup'>g_strdup_inline (location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='comment'>/* This is ugly, but useful internally */</span></td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>if</span> (item-&gt;mtime != <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location) {</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>if</span> (g_file_info_has_attribute (info,</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> item-&gt;mtime = g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='comment'>/* Make sure that save actually saves */</span></td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location_file:</span></td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='comment'>* @file: A local filename specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item to the given @file.</span></td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line">mate_desktop_item_set_location_file (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *file)</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> mate_desktop_item_set_location_gfile (item, gfile);</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">mate_desktop_item_set_location_gfile (MateDesktopItem *item, GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mate_desktop_item_set_location (item, uri);</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> <span class='comment'>* Reading/Writing different sections, NULL is the standard section</span></td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line">mate_desktop_item_attr_exists (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> <span class='comment'>* String type</span></td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line">mate_desktop_item_get_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line">mate_desktop_item_set_string (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> set (item, attr, value);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> item-&gt;type = type_from_string (value);</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='comment'>* LocaleString type</span></td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>return</span> lookup_best_locale(item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring_lang(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr, <span class='keyword'>const</span> <span class='keyword'>char</span>* language)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>return</span> lookup_locale(item, attr, language);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='comment'>* mate_desktop_item_get_string_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> <span class='comment'>* @attr: An attribute name</span></td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='comment'>* Returns the current locale that is used for the given attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> <span class='comment'>* This might not be the same for all attributes. For example, if your</span></td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='comment'>* locale is "en_US.ISO8859-1" but attribute FOO only has "en_US" then</span></td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> <span class='comment'>* that would be returned for attr = "FOO". If attribute BAR has</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* "en_US.ISO8859-1" then that would be returned for "BAR".</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* Returns: a string equal to the current locale or NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>* if the attribute is invalid or there is no matching locale.</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">mate_desktop_item_get_attr_locale (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> value = lookup_locale (item, attr, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">mate_desktop_item_get_languages (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>char</span> *language = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>if</span> (attr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> lookup_locale (item, attr, language) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> list = g_list_prepend (list, language);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line">get_language (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>/* find first without encoding */</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='keyword'>if</span> (strchr (langs_pointer[i], '.') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_desktop_item_set_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> set_locale (item, attr, get_language (), value);</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line">mate_desktop_item_set_localestring_lang (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> set_locale (item, attr, language, value);</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_desktop_item_clear_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> <span class='keyword'>for</span> (l = item-&gt;languages; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> set_locale (item, attr, l-&gt;data, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> set (item, attr, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='comment'>* Strings, Regexps types</span></td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">mate_desktop_item_get_strings (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> <span class='keyword'>return</span> g_strsplit (value, <span class='string_literal'>";"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">mate_desktop_item_set_strings (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> <span class='keyword'>char</span> **strings)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='keyword'>char</span> *str, *str2;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> str = g_strjoinv (<span class='string_literal'>";"</span>, strings);</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> str2 = g_strconcat (str, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> set (item, attr, str2);</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> g_free (str2);</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='comment'>* Boolean type</span></td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line">mate_desktop_item_get_boolean (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> <span class='keyword'>return</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> atoi (value) != 0);</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line">mate_desktop_item_set_boolean (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean value)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> set (item, attr, value ? <span class='string_literal'>"true"</span> : <span class='string_literal'>"false"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line">mate_desktop_item_set_launch_time (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> guint32 timestamp)</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> item-&gt;launch_time = timestamp;</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> <span class='comment'>* Clearing attributes</span></td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line">mate_desktop_item_clear_section (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> sec = find_section (item, section);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> <span class='keyword'>if</span> (sec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> g_free (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> g_list_free (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (li = sec-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> sec-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_list_free (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"><span class='comment'>/************************************************************</span></td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='comment'>* Parser: *</span></td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='comment'>************************************************************/</span></td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">standard_is_boolean (<span class='keyword'>const</span> <span class='keyword'>char</span> * key)</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> <span class='keyword'>static</span> GHashTable *bools = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='keyword'>if</span> (bools == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> bools = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (bools, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line">standard_is_strings (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>static</span> GHashTable *strings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>if</span> (strings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> strings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (strings, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='comment'>/* If no need to cannonize, returns NULL */</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line">cannonize (<span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='keyword'>if</span> (standard_is_boolean (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> <span class='keyword'>if</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> atoi (value) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"true"</span>)<span class='macro_popup'>g_strdup_inline ("true")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"false"</span>)<span class='macro_popup'>g_strdup_inline ("false")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (standard_is_strings (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> <span class='keyword'>int</span> len = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>if</span> (len == 0 || value[len-1] != ';') {</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> <span class='keyword'>return</span> g_strconcat (value, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='comment'>/* XXX: Perhaps we should canonize numeric values as well, but this</span></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span class='comment'>* has caused some subtle problems before so it needs to be done</span></td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='comment'>* carefully if at all */</span></td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">decode_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='keyword'>char</span> *p = g_malloc (strlen (s) + 1);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> <span class='keyword'>char</span> *q = p;</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='keyword'>if</span> (*s == '\\'){</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> <span class='keyword'>switch</span> (*(++s)){</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='keyword'>case</span> 's':</td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> *p++ = ' ';</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> <span class='keyword'>case</span> 't':</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> *p++ = '\t';</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> *p++ = '\n';</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> <span class='keyword'>case</span> 'r':</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> *p++ = '\r';</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span id="start32"><span class='keyword'>static</span></span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">escape_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> <span class='keyword'>char</span> *<span id="start31"><span id="end32">return_value</span></span>, *p;</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *q;</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>int</span> len = 0;</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span id="start30"><span id="end31"><span class='keyword'>if</span></span></span> (<span id="start29"><span id="end30"><span class='variable'>s<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>11.1</div></td><td>'s' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup(<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> <span id="start26"><span id="end27"><span id="start28"><span id="end29">q</span></span></span></span> = <span id="start27"><span id="end28">s</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span id="start13"><span id="end14"><span id="start19"><span id="end20"><span id="start25"><span id="end26"><span class='keyword'>while</span></span></span></span></span></span></span> (*q){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 3116</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> <span id="start18"><span id="end19"><span id="start24"><span id="end25">len</span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span id="start17"><span id="end18"><span id="start23"><span id="end24"><span class='keyword'>if</span></span></span></span></span> (<span id="start16"><span class="mrange"><span id="end17"><span id="start22"><span class="mrange"><span id="end23">strchr</span></span></span></span> (<span class='string_literal'>"\n\r\t\\"</span>, *q) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span id="start15"><span id="end16"><span id="start21"><span id="end22">q</span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> <span id="start14"><span id="end15"><span id="start20"><span id="end21">}</td></tr></span></span></span></span>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span id="start10"><span id="end11"><span id="start12"><span id="end13">return_value</span></span></span></span> = p = (<span class='keyword'>char</span> *) g_malloc (<span id="start11"><span id="end12">len</span></span> + 1);</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span id="start4"><span class='keyword'>do</span></span> {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Loop condition is true. Execution continues on line 3118</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> <span id="start3"><span id="end4"><span id="start9"><span id="end10"><span class='keyword'>switch</span></span></span></span></span> (<span id="start2"><span id="end3"><span id="start8"><span id="end9">*</span></span></span></span>s){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Control jumps to 'case 92:' at line 3131</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Control jumps to 'case 9:' at line 3119</td><td><div class="PathNav"><a href="#EndPath" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='keyword'>case</span> '\t':</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> <span id="start1"><span id="end2">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> <span class="mrange"><span id="start0"><span id="end1">*</span></span>p++ <span id="end0">=</span> 't';</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:30ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> <span class='keyword'>case</span> '\n':</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> *p++ = 'n';</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>case</span> '\r':</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> *p++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> <span id="start7"><span id="end8">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> <span id="start6"><span id="end7">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span id="start5"><span id="end6"><span class='keyword'>break</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td> Execution continues on line 3138</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> } <span class='keyword'>while</span> (<span id="end5">*</span>s++);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> <span class='keyword'>return</span> return_value;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line">check_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> GIConv cd = g_iconv_open (<span class='string_literal'>"UTF-8"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> ((GIConv)-1 == cd)</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> g_iconv_close (cd);</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line">insert_locales (GHashTable *encodings, <span class='keyword'>char</span> *enc, ...)</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='macro'>va_start (args, enc)<span class='macro_popup'>__builtin_va_start(args, enc)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>for</span> (;;) {</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> g_hash_table_insert (encodings, s, enc);</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"><span class='comment'>/* make a standard conversion table from the desktop standard spec */</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">init_encodings (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GHashTable *encodings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> <span class='comment'>/* "C" is plain ascii */</span></td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ASCII"</span>, <span class='string_literal'>"C"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ARMSCII-8"</span>, <span class='string_literal'>"by"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"BIG5"</span>, <span class='string_literal'>"zh_TW"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"CP1251"</span>, <span class='string_literal'>"be"</span>, <span class='string_literal'>"bg"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"EUC-CN"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-CN"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GB2312"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-JP"</span>, <span class='string_literal'>"ja"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-KR"</span>, <span class='string_literal'>"ko"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GEORGIAN-PS"</span>, <span class='string_literal'>"ka"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-1"</span>, <span class='string_literal'>"br"</span>, <span class='string_literal'>"ca"</span>, <span class='string_literal'>"da"</span>, <span class='string_literal'>"de"</span>, <span class='string_literal'>"en"</span>, <span class='string_literal'>"es"</span>, <span class='string_literal'>"eu"</span>, <span class='string_literal'>"fi"</span>, <span class='string_literal'>"fr"</span>, <span class='string_literal'>"gl"</span>, <span class='string_literal'>"it"</span>, <span class='string_literal'>"nl"</span>, <span class='string_literal'>"wa"</span>, <span class='string_literal'>"no"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"sv"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-2"</span>, <span class='string_literal'>"cs"</span>, <span class='string_literal'>"hr"</span>, <span class='string_literal'>"hu"</span>, <span class='string_literal'>"pl"</span>, <span class='string_literal'>"ro"</span>, <span class='string_literal'>"sk"</span>, <span class='string_literal'>"sl"</span>, <span class='string_literal'>"sq"</span>, <span class='string_literal'>"sr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-3"</span>, <span class='string_literal'>"eo"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-5"</span>, <span class='string_literal'>"mk"</span>, <span class='string_literal'>"sp"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-7"</span>, <span class='string_literal'>"el"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-9"</span>, <span class='string_literal'>"tr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-13"</span>, <span class='string_literal'>"lt"</span>, <span class='string_literal'>"lv"</span>, <span class='string_literal'>"mi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-14"</span>, <span class='string_literal'>"ga"</span>, <span class='string_literal'>"cy"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-15"</span>, <span class='string_literal'>"et"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-R"</span>, <span class='string_literal'>"ru"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-U"</span>, <span class='string_literal'>"uk"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"TCVN-5712"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN-5712"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TIS-620"</span>, <span class='string_literal'>"th"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "VISCII", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>return</span> encodings;</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line">get_encoding_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span class='keyword'>char</span> lang[3];</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *encoding;</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span class='keyword'>static</span> GHashTable *encodings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='comment'>/* if locale includes encoding, use it */</span></td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> encoding = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> encoding+1;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='keyword'>if</span> (encodings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> encodings = init_encodings ();</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='comment'>/* first try the entire locale (at this point ll_CC) */</span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> encoding = g_hash_table_lookup (encodings, locale);</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>return</span> encoding;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='comment'>/* Try just the language */</span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> strncpy (lang, locale, 2);</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> lang[2] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (encodings, lang);</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"><span class='keyword'>static</span> Encoding</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">get_encoding (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='keyword'>char</span> buf [<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> gboolean all_valid_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='keyword'>if</span> (strncmp (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> buf,</td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='keyword'>char</span> *p = &amp;buf[strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)];</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='keyword'>if</span> (*p != '=')</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"UTF-8"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"Legacy-Mixed"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='comment'>/* According to the spec we're not supposed</span></td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='comment'>* to read a file like this */</span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='keyword'>return</span> ENCODING_UNKNOWN;</td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (<span class='string_literal'>"[KDE Desktop Entry]"</span>, buf) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='comment'>/* don't break yet, we still want to support</span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='comment'>* Encoding even here */</span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8 &amp;&amp; ! g_utf8_validate (buf, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> all_valid_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='keyword'>if</span> (old_kde)</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> <span class='comment'>/* try to guess by location */</span></td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strstr (rb-&gt;uri, <span class='string_literal'>"mate/apps/"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> <span class='comment'>/* old mate */</span></td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> <span class='comment'>/* A dilemma, new KDE files are in UTF-8 but have no Encoding</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> <span class='comment'>* info, at this time we really can't tell. The best thing to</span></td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='comment'>* do right now is to just assume UTF-8 if the whole file</span></td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> <span class='comment'>* validates as utf8 I suppose */</span></td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8)</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line">decode_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *value, Encoding encoding, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* if legacy mixed, then convert */</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_LEGACY_MIXED) {</td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *char_encoding = get_encoding_from_locale (locale);</td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>char</span> *utf8_string;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='keyword'>if</span> (char_encoding == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='keyword'>if</span> (strcmp (char_encoding, <span class='string_literal'>"ASCII"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> utf8_string = g_convert (value, -1, <span class='string_literal'>"UTF-8"</span>, char_encoding,</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='keyword'>if</span> (utf8_string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> retval = decode_string_and_dup (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> g_free (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='comment'>/* if utf8, then validate */</span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_UTF8) {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='keyword'>if</span> ( ! g_utf8_validate (value, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='comment'>/* invalid utf8, ignore this key */</span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='comment'>/* Meaning this is not a localized string */</span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">snarf_locale_from_key (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *brace;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='keyword'>char</span> *locale, *p;</td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> brace = strchr (key, '[');</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='keyword'>if</span> (brace == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> locale = <span class='macro'>g_strdup (brace + 1)<span class='macro_popup'>g_strdup_inline (brace + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (*locale == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> p = strchr (locale, ']');</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> <span class='keyword'>return</span> locale;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line">insert_key (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> Section *cur_section,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> Encoding encoding,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value,</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> gboolean old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> gboolean no_translations)</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> <span class='keyword'>char</span> *k;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> <span class='keyword'>char</span> *val;</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"> <span class='comment'>/* we always store everything in UTF-8 */</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> val = <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> <span class='keyword'>char</span> *locale = snarf_locale_from_key (key);</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> <span class='comment'>/* If we're ignoring translations */</span></td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> <span class='keyword'>if</span> (no_translations &amp;&amp; locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> val = decode_string (value, encoding, locale);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* Ignore this key, it's whacked */</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='keyword'>if</span> (val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> g_strchomp (val);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='comment'>/* For old KDE entries, we can also split by a comma</span></td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='comment'>* on sort order, so convert to semicolons */</span></td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> <span class='keyword'>if</span> (old_kde &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> strchr (val, ';') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> <span class='keyword'>for</span> (i = 0; val[i] != '\0'; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> <span class='keyword'>if</span> (val[i] == ',')</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> val[i] = ';';</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> <span class='comment'>/* Check some types, not perfect, but catches a lot</span></td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> <span class='comment'>* of things */</span></td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> <span class='keyword'>char</span> *cannon = cannonize (key, val);</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> <span class='keyword'>if</span> (cannon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> val = cannon;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> <span class='comment'>/* Take care of the language part */</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> <span class='comment'>/* Whack C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> p = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> <span class='keyword'>char</span> *p, *brace;</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> <span class='comment'>/* Whack the encoding part */</span></td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> p = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> item-&gt;languages = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> (item-&gt;languages, locale);</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> <span class='comment'>/* Whack encoding from encoding in the key */</span></td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> brace = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> p = strchr (brace, '.');</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> *p = ']';</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line"> *(p+1) = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, k) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> item-&gt;keys = g_list_prepend (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> <span class='macro'>g_strdup (k)<span class='macro_popup'>g_strdup_inline (k)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> g_hash_table_replace (item-&gt;main_hash, k, val);</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> cur_section-&gt;name, k);</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, full) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> cur_section-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> g_list_prepend (cur_section-&gt;keys, k);</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> full, val);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line">setup_type (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type = g_hash_table_lookup (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> <span class='keyword'>char</span> *base = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> <span class='keyword'>if</span> (base != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> strcmp (base, <span class='string_literal'>".directory"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> <span class='comment'>/* This gotta be a directory */</span></td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"Directory"</span>)<span class='macro_popup'>g_strdup_inline ("Directory")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> item-&gt;type = type_from_string (type);</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"><span class='comment'>/* fallback to find something suitable for C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line">try_english_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>char</span> *locales[] = { <span class='string_literal'>"en_US"</span>, <span class='string_literal'>"en_GB"</span>, <span class='string_literal'>"en_AU"</span>, <span class='string_literal'>"en"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> <span class='keyword'>for</span> (i = 0; locales[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> str = <span class='macro'>g_strdup (lookup_locale (item, key, locales[i]))<span class='macro_popup'>g_strdup_inline (lookup_locale (item, key, locales[i]))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> <span class='comment'>/* We need a 7-bit ascii string, so whack all</span></td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='comment'>* above 127 chars */</span></td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> guchar *p;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='keyword'>for</span> (p = (guchar *)str; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>if</span> (*p &gt; 127)</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> *p = '?';</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> <span class='keyword'>return</span> str;</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line">sanitize (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type;</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> type = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> <span class='comment'>/* understand old mate style url exec thingies */</span></td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (type, <span class='string_literal'>"URL"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='keyword'>if</span> (exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> <span class='comment'>/* Note, this must be in this order */</span></td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>, exec);</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='comment'>/* we make sure we have Name, Encoding and Version */</span></td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>char</span> *name = try_english_key (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> <span class='comment'>/* If no name, use the basename */</span></td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> name = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> <span class='comment'>/* If no uri either, use same default as mate_desktop_item_new */</span></td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned here is the name of</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> <span class='comment'>* an application or a document */</span></td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"No name"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("mate-desktop", "No name"<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> <span class='comment'>/* We store everything in UTF-8 so write that down */</span></td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line"> <span class='comment'>/* this is the version that we follow, so write it down */</span></td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"1.0"</span>)<span class='macro_popup'>g_strdup_inline ("1.0")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> FirstBrace,</td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> OnSecHeader,</td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> IgnoreToEOL,</td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> IgnoreToEOLFirst,</td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> KeyDef,</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> KeyDefOnKey,</td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> KeyValue</td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line">ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> <span class='keyword'>int</span> state;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> <span class='keyword'>char</span> CharBuffer [1024];</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> <span class='keyword'>char</span> *next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> Encoding encoding;</td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> Section *cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> <span class='keyword'>char</span> *key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> encoding = get_encoding (rb);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> <span class='keyword'>if</span> (encoding == ENCODING_UNKNOWN) {</td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_UNKNOWN_ENCODING,</td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Unknown encoding of: %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Unknown encoding of: %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"> <span class='comment'>/* Rewind since get_encoding goes through the file */</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line"> <span class='keyword'>if</span> (! readbuf_rewind (rb, error)) {</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> <span class='comment'>/* Note: location and mtime are filled in by the new_from_file</span></td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='comment'>* function since it has those values */</span></td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"><span class='directive'>#define OVERFLOW (next == &amp;CharBuffer [sizeof(CharBuffer)-1])</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> <span class='keyword'>while</span> ((c = readbuf_getc (rb)) != <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> <span class='keyword'>if</span> (c == '\r') <span class='comment'>/* Ignore Carriage Return */</span></td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> <span class='keyword'>switch</span> (state) {</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> <span class='keyword'>case</span> OnSecHeader:</td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> <span class='keyword'>if</span> (c == ']' || OVERFLOW) {</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> cur_section-&gt;keys = g_list_reverse</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='string_literal'>"KDE Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line"> <span class='string_literal'>"Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> cur_section = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> cur_section-&gt;name =</td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> cur_section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> item-&gt;sections = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> (item-&gt;sections, cur_section);</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (c == '[') {</td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='comment'>/* FIXME: probably error out instead of ignoring this */</span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOL:</td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOLFirst:</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> <span class='keyword'>if</span> (c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> <span class='keyword'>if</span> (state == IgnoreToEOLFirst)</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line"> <span class='keyword'>case</span> FirstBrace:</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> <span class='keyword'>case</span> KeyDef:</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line"> <span class='keyword'>case</span> KeyDefOnKey:</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> <span class='keyword'>if</span> (c == '#') {</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> state = IgnoreToEOLFirst;</td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> <span class='keyword'>if</span> (c == '[' &amp;&amp; state != KeyDefOnKey){</td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> state = OnSecHeader;</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* On first pass, don't allow dangling keys */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> <span class='keyword'>if</span> ((c == ' ' &amp;&amp; state != KeyDefOnKey) || c == '\t')</td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> <span class='keyword'>if</span> (c == '\n' || OVERFLOW) { <span class='comment'>/* Abort Definition */</span></td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> <span class='keyword'>if</span> (c == '=' || OVERFLOW){</td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> key = <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> state = KeyValue;</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"> state = KeyDefOnKey;</td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line"> <span class='keyword'>case</span> KeyValue:</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='keyword'>if</span> (OVERFLOW || c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> state = (c == '\n') ? KeyDef : IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"> } <span class='comment'>/* switch */</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line"> } <span class='comment'>/* while ((c = getc_unlocked (f)) != EOF) */</span></td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; state == KeyValue) {</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"><span class='directive'>#undef OVERFLOW</span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> cur_section-&gt;keys = g_list_reverse (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"> item-&gt;keys = g_list_reverse (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line"> <span class='comment'>/* sections were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line"> item-&gt;sections = g_list_reverse (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> <span class='comment'>/* sanitize some things */</span></td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> sanitize (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> <span class='comment'>/* make sure that we set up the type */</span></td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> setup_type (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> stream_printf (GFileOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line">stream_printf (GFileOutputStream *stream, <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...)</td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> gchar *s;</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> <span class='macro'>va_start (args, format)<span class='macro_popup'>__builtin_va_start(args, format)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> s = g_strdup_vprintf (format, args);</td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> <span class='comment'>/* FIXME: what about errors */</span></td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> g_output_stream_write (<span class='macro'>G_OUTPUT_STREAM (stream)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((stream)), ((g_output_stream_get_type ()))))))</span></span>, s, strlen (s),</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> g_free (s);</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line">dump_section (MateDesktopItem *item, GFileOutputStream *stream, Section *section)</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[%s]\n"</span>, section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> <span class='keyword'>for</span> (li = section-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>, section-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"><span id="start48"><span class='keyword'>static</span></span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line">ditem_save (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> <span id="start47"><span id="end48">GList</span></span> *li;</td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line"> stream = g_file_replace (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, G_FILE_CREATE_NONE,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> <span id="start46"><span id="end47"><span class='keyword'>if</span></span></span> (<span id="start45"><span class="mrange"><span id="end46">stream</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'stream' is not equal to NULL</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line"> <span id="start42"><span id="end43"><span id="start44"><span id="end45">stream_printf</span></span></span></span> (<span id="start43"><span id="end44">stream</span></span>, <span class='string_literal'>"[Desktop Entry]\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> <span id="start41"><span id="end42"><span class='keyword'>for</span></span></span> (li = item-&gt;keys; <span id="start40"><span class="mrange"><span id="end41">li</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>; li = li-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:31ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Assuming 'li' is not equal to NULL</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"> <span id="start37"><span id="end38"><span id="start39"><span id="end40"><span class='keyword'>const</span></span></span></span></span> <span class='keyword'>char</span> *key = <span id="start38"><span id="end39">li</span></span>-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> <span id="start36"><span id="end37"><span class='keyword'>if</span></span></span> (<span id="start35"><span class="mrange"><span id="end36">value</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming 'value' is not equal to NULL</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line"> <span id="start34"><span id="end35"><span class='keyword'>char</span></span></span> *val = <span class="mrange"><span id="end33">escape_string_and_dup</span> (<span id="start33"><span id="end34">value</span></span>)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Calling 'escape_string_and_dup'</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='keyword'>if</span> (item-&gt;sections != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> Section *section = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line"> <span class='comment'>/* Don't write empty sections */</span></td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> <span class='keyword'>if</span> (section-&gt;keys == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> dump_section (item, stream, section);</td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> <span class='keyword'>if</span> (li-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line"><span class='keyword'>static</span> gpointer</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line">_mate_desktop_item_copy (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_copy (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line">_mate_desktop_item_free (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> mate_desktop_item_unref (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">GType</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line">mate_desktop_item_get_type (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line"> <span class='keyword'>static</span> GType type = 0;</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line"> <span class='keyword'>if</span> (type == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> type = g_boxed_type_register_static (<span class='string_literal'>"MateDesktopItem"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> _mate_desktop_item_copy,</td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> _mate_desktop_item_free);</td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line">GQuark</td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line">mate_desktop_item_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='keyword'>static</span> GQuark q = 0;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='keyword'>if</span> (q == 0)</td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> q = g_quark_from_static_string (<span class='string_literal'>"mate-desktop-item-error-quark"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-413fe6.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-413fe6.html
new file mode 100644
index 0000000..0dcf473
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-413fe6.html
@@ -0,0 +1,2115 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-hsv.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-hsv.c -->
+
+<!-- FILENAME mate-hsv.c -->
+
+<!-- FUNCTIONNAME mate_hsv_button_press -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 413fe6d3c3e16848fe56fe1ff3445ec4 -->
+
+<!-- BUGLINE 670 -->
+
+<!-- BUGCOLUMN 20 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-hsv.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 670, column 20</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-hsv.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-hsv.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"670": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* HSV color selector for GTK+</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright (C) 1999 The Free Software Foundation</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* Copyright (C) 2019-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Authors: Simon Budig &lt;[email protected]&gt; (original code)</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* Federico Mena-Quintero &lt;[email protected]&gt; (cleanup for GTK+)</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* Jonathan Blandford &lt;[email protected]&gt; (cleanup for GTK+)</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* This library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* modify it under the terms of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* License as published by the Free Software Foundation; either</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* version 2 of the License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* This library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* Lesser General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* License along with this library. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* file for a list of people on the GTK+ Team. See the ChangeLog</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* files for a list of changes. These files are distributed with</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>* GTK+ at ftp://ftp.gtk.org/pub/gtk/.</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> <span class='comment'>* Modified to work internally in mate-desktop by Pablo Barciela 2019</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include "mate-hsv.h"</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;math.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>I_(string)<span class='macro_popup'>g_intern_static_string (string)</span></span> g_intern_static_string (string)</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='comment'>* SECTION:mate-hsv</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='comment'>* @Short_description: A “color wheel” widget</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='comment'>* @Title: MateHSV</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='comment'>* #MateHSV is the “color wheel” part of a complete color selector widget.</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='comment'>* It allows to select a color by determining its HSV components in an</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> <span class='comment'>* intuitive way. Moving the selection around the outer ring changes the hue,</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> <span class='comment'>* and moving the selection point inside the inner triangle changes value and</span></td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='comment'>* saturation.</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='comment'>/* Default width/height */</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_SIZE<span class='macro_popup'>100</span></span> 100</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='comment'>/* Default ring width */</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_RING_WIDTH<span class='macro_popup'>10</span></span> 10</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"><span class='comment'>/* Dragging modes */</span></td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> DRAG_NONE,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> DRAG_H,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> DRAG_SV</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">} DragMode;</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='comment'>/* Private part of the MateHSV structure */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='keyword'>struct</span> _MateHSVPrivate</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Color value */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>double</span> h;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>double</span> s;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>double</span> v;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* Size and ring width */</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='keyword'>int</span> size;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> <span class='keyword'>int</span> ring_width;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='comment'>/* Window for capturing events */</span></td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> GdkWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='comment'>/* Dragging mode */</span></td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> DragMode mode;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> guint focus_on_ring : 1;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='comment'>/* Signal IDs */</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> CHANGED,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> MOVE,</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> LAST_SIGNAL</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_destroy (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_realize (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_unrealize (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_get_preferred_width (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> gint *natural);</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_get_preferred_height (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> gint *natural);</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_size_allocate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> GtkAllocation *allocation);</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_button_press (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GdkEventButton *event);</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_button_release (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> GdkEventButton *event);</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_motion (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> GdkEventMotion *event);</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_draw (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> cairo_t *cr);</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_grab_broken (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> GdkEventGrabBroken *event);</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_focus (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> GtkDirectionType direction);</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_move (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> GtkDirectionType dir);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> guint hsv_signals[LAST_SIGNAL];</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='macro'>G_DEFINE_TYPE_WITH_PRIVATE (MateHSV, mate_hsv, GTK_TYPE_WIDGET)<span class='macro_popup'>static void mate_hsv_init (MateHSV *self); static void mate_hsv_class_init<br> (MateHSVClass *klass); static GType mate_hsv_get_type_once (<br>void); static gpointer mate_hsv_parent_class = ((void*)0); static<br> gint MateHSV_private_offset; static void mate_hsv_class_intern_init<br> (gpointer klass) { mate_hsv_parent_class = g_type_class_peek_parent<br> (klass); if (MateHSV_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;MateHSV_private_offset); mate_hsv_class_init ((<br>MateHSVClass*) klass); } __attribute__ ((__unused__)) static inline<br> gpointer mate_hsv_get_instance_private (MateHSV *self) { return<br> (((gpointer) ((guint8*) (self) + (glong) (MateHSV_private_offset<br>)))); } GType mate_hsv_get_type (void) { static gsize static_g_define_type_id<br> = 0; if ((__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); (void<br>) (0 ? (gpointer) *(&amp;static_g_define_type_id) : ((void*)0<br>)); (!(__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = mate_hsv_get_type_once ()<br>; (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType mate_hsv_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((gtk_widget_get_type ()), g_intern_static_string ("MateHSV"<br>), sizeof (MateHSVClass), (GClassInitFunc)(void (*)(void)) mate_hsv_class_intern_init<br>, sizeof (MateHSV), (GInstanceInitFunc)(void (*)(void)) mate_hsv_init<br>, (GTypeFlags) 0); { {{ MateHSV_private_offset = g_type_add_instance_private<br> (g_define_type_id, sizeof (MateHSVPrivate)); };} } return g_define_type_id<br>; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='comment'>/* Class initialization function for the HSV color selector */</span></td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line">mate_hsv_class_init (MateHSVClass *class)</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> GObjectClass *gobject_class;</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GtkWidgetClass *widget_class;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> MateHSVClass *hsv_class;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> GtkBindingSet *binding_set;</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> gobject_class = (GObjectClass *) class;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> widget_class = (GtkWidgetClass *) class;</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> hsv_class = <span class='macro'>MATE_HSV_CLASS (class)<span class='macro_popup'>((((MateHSVClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((class)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> widget_class-&gt;destroy = mate_hsv_destroy;</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> widget_class-&gt;realize = mate_hsv_realize;</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> widget_class-&gt;unrealize = mate_hsv_unrealize;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> widget_class-&gt;get_preferred_width = mate_hsv_get_preferred_width;</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> widget_class-&gt;get_preferred_height = mate_hsv_get_preferred_height;</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> widget_class-&gt;size_allocate = mate_hsv_size_allocate;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> widget_class-&gt;button_press_event = mate_hsv_button_press;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> widget_class-&gt;button_release_event = mate_hsv_button_release;</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> widget_class-&gt;motion_notify_event = mate_hsv_motion;</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> widget_class-&gt;draw = mate_hsv_draw;</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> widget_class-&gt;focus = mate_hsv_focus;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> widget_class-&gt;grab_broken_event = mate_hsv_grab_broken;</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_COLOR_CHOOSER);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> hsv_class-&gt;move = mate_hsv_move;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> hsv_signals[CHANGED] =</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> g_signal_new (<span class='macro'>I_(<span class='string_literal'>"changed"</span>)<span class='macro_popup'>g_intern_static_string ("changed")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (gobject_class)<span class='macro_popup'>((((GTypeClass*) (gobject_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (MateHSVClass, changed)<span class='macro_popup'>((glong) __builtin_offsetof(MateHSVClass, changed))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> hsv_signals[MOVE] =</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> g_signal_new (<span class='macro'>I_(<span class='string_literal'>"move"</span>)<span class='macro_popup'>g_intern_static_string ("move")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (gobject_class)<span class='macro_popup'>((((GTypeClass*) (gobject_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (MateHSVClass, move)<span class='macro_popup'>((glong) __builtin_offsetof(MateHSVClass, move))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='macro'>GTK_TYPE_DIRECTION_TYPE<span class='macro_popup'>(gtk_direction_type_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> binding_set = gtk_binding_set_by_class (class);</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Up<span class='macro_popup'>0xff52</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_UP);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Up<span class='macro_popup'>0xff97</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_UP);</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Down<span class='macro_popup'>0xff54</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_DOWN);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Down<span class='macro_popup'>0xff99</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_DOWN);</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Right<span class='macro_popup'>0xff53</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_RIGHT);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Right<span class='macro_popup'>0xff98</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_RIGHT);</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Left<span class='macro_popup'>0xff51</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_LEFT);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Left<span class='macro_popup'>0xff96</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_LEFT);</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line">mate_hsv_init (MateHSV *hsv)</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> priv = mate_hsv_get_instance_private (hsv);</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> hsv-&gt;priv = priv;</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> gtk_widget_set_has_window (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> gtk_widget_set_can_focus (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> priv-&gt;h = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> priv-&gt;s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> priv-&gt;v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> priv-&gt;size = <span class='macro'>DEFAULT_SIZE<span class='macro_popup'>100</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> priv-&gt;ring_width = <span class='macro'>DEFAULT_RING_WIDTH<span class='macro_popup'>10</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">mate_hsv_destroy (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (mate_hsv_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_hsv_parent_class)), ((gtk_widget_get_type ()))))))</span></span>-&gt;destroy (widget);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line">mate_hsv_realize (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> GtkAllocation allocation;</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> GdkWindow *parent_window;</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> GdkWindowAttr attr;</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='keyword'>int</span> attr_mask;</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> gtk_widget_set_realized (widget, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> gtk_widget_get_allocation (widget, &amp;allocation);</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> attr.window_type = GDK_WINDOW_CHILD;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> attr.x = allocation.x;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> attr.y = allocation.y;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> attr.width = allocation.width;</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> attr.height = allocation.height;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> attr.wclass = GDK_INPUT_ONLY;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> attr.event_mask = gtk_widget_get_events (widget);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> attr.event_mask |= (GDK_KEY_PRESS_MASK</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> | GDK_BUTTON_PRESS_MASK</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> | GDK_BUTTON_RELEASE_MASK</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> | GDK_POINTER_MOTION_MASK</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> | GDK_ENTER_NOTIFY_MASK</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> | GDK_LEAVE_NOTIFY_MASK);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> attr_mask = GDK_WA_X | GDK_WA_Y;</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> parent_window = gtk_widget_get_parent_window (widget);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> gtk_widget_set_window (widget, parent_window);</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> <span class='macro'>g_object_ref (parent_window)<span class='macro_popup'>((__typeof__ (parent_window)) (g_object_ref) (parent_window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> priv-&gt;window = gdk_window_new (parent_window, &amp;attr, attr_mask);</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> gdk_window_set_user_data (priv-&gt;window, hsv);</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> gdk_window_show (priv-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line">mate_hsv_unrealize (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> gdk_window_set_user_data (priv-&gt;window, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> gdk_window_destroy (priv-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> priv-&gt;window = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (mate_hsv_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_hsv_parent_class)), ((gtk_widget_get_type ()))))))</span></span>-&gt;unrealize (widget);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line">mate_hsv_get_preferred_width (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> gint *natural)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> gint focus_pad;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, &amp;focus_width,</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span class='string_literal'>"focus-padding"</span>, &amp;focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> *minimum = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> *natural = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line">mate_hsv_get_preferred_height (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> gint *natural)</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> gint focus_pad;</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, &amp;focus_width,</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='string_literal'>"focus-padding"</span>, &amp;focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> *minimum = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> *natural = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line">mate_hsv_size_allocate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> GtkAllocation *allocation)</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> gtk_widget_set_allocation (widget, allocation);</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_realized (widget))</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> gdk_window_move_resize (priv-&gt;window,</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> allocation-&gt;x,</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> allocation-&gt;y,</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> allocation-&gt;width,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> allocation-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"><span class='comment'>/* Utility functions */</span></td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"><span class='directive'>#define <span class='macro'>INTENSITY(r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"><span class='comment'>/* Converts from HSV to RGB */</span></td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line">hsv_to_rgb (gdouble *h,</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> gdouble *s,</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> gdouble *v)</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> gdouble hue, saturation, value;</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> gdouble f, p, q, t;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>if</span> (*s == 0.0)</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> *h = *v;</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> *s = *v;</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> *v = *v; <span class='comment'>/* heh */</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> hue = *h * 6.0;</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> saturation = *s;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> value = *v;</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='keyword'>if</span> (hue == 6.0)</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> hue = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> f = hue - (<span class='keyword'>int</span>) hue;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> p = value * (1.0 - saturation);</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> q = value * (1.0 - saturation * f);</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> t = value * (1.0 - saturation * (1.0 - f));</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='keyword'>switch</span> ((<span class='keyword'>int</span>) hue)</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='keyword'>case</span> 0:</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> *h = value;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> *s = t;</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> *v = p;</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>case</span> 1:</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> *h = q;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> *s = value;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> *v = p;</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span class='keyword'>case</span> 2:</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> *h = p;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> *s = value;</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> *v = t;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> <span class='keyword'>case</span> 3:</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> *h = p;</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> *s = q;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> *v = value;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='keyword'>case</span> 4:</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> *h = t;</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> *s = p;</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> *v = value;</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>case</span> 5:</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> *h = value;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> *s = p;</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> *v = q;</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-hsv.c", 410<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/* Computes the vertices of the saturation/value triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">compute_triangle (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> gint *hx,</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> gint *hy,</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> gint *sx,</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> gint *sy,</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> gint *vx,</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> gint *vy)</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> gdouble center_x;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> gdouble center_y;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> gdouble inner, outer;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> gdouble angle;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> outer = priv-&gt;size / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> inner = outer - priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> angle = priv-&gt;h * 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> *hx = floor (center_x + cos (angle) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> *hy = floor (center_y - sin (angle) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> *sx = floor (center_x + cos (angle + 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> *sy = floor (center_y - sin (angle + 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> *vx = floor (center_x + cos (angle + 4.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> *vy = floor (center_y - sin (angle + 4.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"><span class='comment'>/* Computes whether a point is inside the hue ring */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">is_in_ring (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> gdouble y)</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> gdouble dx, dy, dist;</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> gdouble center_x;</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> gdouble center_y;</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> gdouble inner, outer;</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> outer = priv-&gt;size / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> inner = outer - priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> dx = x - center_x;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> dy = center_y - y;</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> dist = dx * dx + dy * dy;</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> <span class='keyword'>return</span> (dist &gt;= inner * inner &amp;&amp; dist &lt;= outer * outer);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"><span class='comment'>/* Computes a saturation/value pair based on the mouse coordinates */</span></td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line">compute_sv (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> gdouble y,</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> gdouble *s,</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> gdouble *v)</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>int</span> ihx, ihy, isx, isy, ivx, ivy;</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>double</span> hx, hy, sx, sy, vx, vy;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>double</span> center_x;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>double</span> center_y;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> compute_triangle (hsv, &amp;ihx, &amp;ihy, &amp;isx, &amp;isy, &amp;ivx, &amp;ivy);</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> hx = ihx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> hy = center_y - ihy;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> sx = isx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> sy = center_y - isy;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> vx = ivx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> vy = center_y - ivy;</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> x -= center_x;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> y = center_y - y;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (vx * (x - sx) + vy * (y - sy) &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> *s = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> *v = (((x - sx) * (hx - sx) + (y - sy) * (hy-sy))</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> / ((hx - sx) * (hx - sx) + (hy - sy) * (hy - sy)));</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='keyword'>if</span> (*v &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> *v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*v &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (hx * (x - sx) + hy * (y - sy) &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> *v = (((x - sx) * (vx - sx) + (y - sy) * (vy - sy))</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> / ((vx - sx) * (vx - sx) + (vy - sy) * (vy - sy)));</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>if</span> (*v &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> *v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*v &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (sx * (x - hx) + sy * (y - hy) &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> *s = (((x - vx) * (hx - vx) + (y - vy) * (hy - vy)) /</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> ((hx - vx) * (hx - vx) + (hy - vy) * (hy - vy)));</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='keyword'>if</span> (*s &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*s &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> *s = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> *v = (((x - sx) * (hy - vy) - (y - sy) * (hx - vx))</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> / ((vx - sx) * (hy - vy) - (vy - sy) * (hx - vx)));</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='keyword'>if</span> (*v&lt;= 0.0)</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> *v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='keyword'>if</span> (*v &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='keyword'>if</span> (fabs (hy - vy) &lt; fabs (hx - vx))</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> *s = (x - sx - *v * (vx - sx)) / (*v * (hx - vx));</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> *s = (y - sy - *v * (vy - sy)) / (*v * (hy - vy));</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='keyword'>if</span> (*s &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*s &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> *s = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='comment'>/* Computes whether a point is inside the saturation/value triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line">is_in_triangle (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> gdouble y)</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> <span class='keyword'>int</span> hx, hy, sx, sy, vx, vy;</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>double</span> det, s, v;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> compute_triangle (hsv, &amp;hx, &amp;hy, &amp;sx, &amp;sy, &amp;vx, &amp;vy);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> det = (vx - sx) * (hy - sy) - (vy - sy) * (hx - sx);</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> s = ((x - sx) * (hy - sy) - (y - sy) * (hx - sx)) / det;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> v = ((vx - sx) * (y - sy) - (vy - sy) * (x - sx)) / det;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>return</span> (s &gt;= 0.0 &amp;&amp; v &gt;= 0.0 &amp;&amp; s + v &lt;= 1.0);</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"><span class='comment'>/* Computes a value based on the mouse coordinates */</span></td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line">compute_v (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> gdouble y)</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>double</span> center_x;</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='keyword'>double</span> center_y;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>double</span> dx, dy;</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> <span class='keyword'>double</span> angle;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> dx = x - center_x;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> dy = center_y - y;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> angle = atan2 (dy, dx);</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (angle &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> angle += 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> <span class='keyword'>return</span> angle / (2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"><span class='comment'>/* Event handlers */</span></td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line">set_cross_grab (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> GdkDevice *device,</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> guint32 time)</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> GdkCursor *cursor;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> cursor = gdk_cursor_new_for_display (gtk_widget_get_display (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> GDK_CROSSHAIR);</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> gdk_seat_grab (gdk_device_get_seat (device),</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> priv-&gt;window,</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> GDK_SEAT_CAPABILITY_ALL_POINTING,</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> cursor,</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> g_object_unref (cursor);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line">mate_hsv_grab_broken (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> GdkEventGrabBroken *event)</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> priv-&gt;mode = DRAG_NONE;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line">mate_hsv_button_press (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='keyword'>double</span> x, y;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode != DRAG_NONE || event-&gt;button != <span class='macro'>GDK_BUTTON_PRIMARY<span class='macro_popup'>(1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> x = event-&gt;x;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> y = event-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>if</span> (is_in_ring (hsv, x, y))</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> priv-&gt;mode = DRAG_H;</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> set_cross_grab (hsv, gdk_event_get_device ((GdkEvent *) event), event-&gt;time);</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> mate_hsv_set_color (hsv,</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> compute_v (hsv, x, y),</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> priv-&gt;s,</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> priv-&gt;v);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> gtk_widget_grab_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>if</span> (is_in_triangle (hsv, x, y))</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> gdouble s, v;</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> priv-&gt;mode = <span class="mrange">DRAG_SV</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:20ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> set_cross_grab (hsv, gdk_event_get_device ((GdkEvent *) event), event-&gt;time);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> compute_sv (hsv, x, y, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> mate_hsv_set_color (hsv, priv-&gt;h, s, v);</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> gtk_widget_grab_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line">mate_hsv_button_release (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> DragMode mode;</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> gdouble x, y;</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_NONE || event-&gt;button != <span class='macro'>GDK_BUTTON_PRIMARY<span class='macro_popup'>(1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='comment'>/* Set the drag mode to DRAG_NONE so that signal handlers for "catched"</span></td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='comment'>* can see that this is the final color state.</span></td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> mode = priv-&gt;mode;</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> priv-&gt;mode = DRAG_NONE;</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> x = event-&gt;x;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> y = event-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='keyword'>if</span> (mode == DRAG_H)</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> mate_hsv_set_color (hsv, compute_v (hsv, x, y), priv-&gt;s, priv-&gt;v);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (mode == DRAG_SV)</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> gdouble s, v;</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> compute_sv (hsv, x, y, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> mate_hsv_set_color (hsv, priv-&gt;h, s, v);</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-hsv.c", 719<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> gdk_seat_ungrab (gdk_device_get_seat (gdk_event_get_device ((GdkEvent *) event)));</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">mate_hsv_motion (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> GdkEventMotion *event)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> gdouble x, y;</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_NONE)</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> gdk_event_request_motions (event);</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> x = event-&gt;x;</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> y = event-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_H)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> mate_hsv_set_color (hsv, compute_v (hsv, x, y), priv-&gt;s, priv-&gt;v);</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_SV)</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> gdouble s, v;</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> compute_sv (hsv, x, y, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> mate_hsv_set_color (hsv, priv-&gt;h, s, v);</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-hsv.c", 756<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"><span class='comment'>/* Redrawing */</span></td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/* Paints the hue ring */</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line">paint_ring (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> cairo_t *cr)</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='keyword'>int</span> xx, yy, width, height;</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> gdouble dx, dy, dist;</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> gdouble center_x;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> gdouble center_y;</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> gdouble inner, outer;</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> guint32 *buf, *p;</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> gdouble angle;</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> gdouble hue;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> gdouble r, g, b;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> cairo_surface_t *source;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> cairo_t *source_cr;</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> gint stride;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> width = gtk_widget_get_allocated_width (widget);</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> height = gtk_widget_get_allocated_height (widget);</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> center_x = width / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> center_y = height / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> outer = priv-&gt;size / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> inner = outer - priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='comment'>/* Create an image initialized with the ring colors */</span></td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width);</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> buf = <span class='macro'>g_new (guint32, height * stride / 4)<span class='macro_popup'>((guint32 *) g_malloc_n ((height * stride / 4), sizeof (guint32<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> <span class='keyword'>for</span> (yy = 0; yy &lt; height; yy++)</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> p = buf + yy * width;</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> dy = -(yy - center_y);</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='keyword'>for</span> (xx = 0; xx &lt; width; xx++)</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> dx = xx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> dist = dx * dx + dy * dy;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='keyword'>if</span> (dist &lt; ((inner-1) * (inner-1)) || dist &gt; ((outer+1) * (outer+1)))</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> *p++ = 0;</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> angle = atan2 (dy, dx);</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> <span class='keyword'>if</span> (angle &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> angle += 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> hue = angle / (2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> r = hue;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> g = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> b = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> hsv_to_rgb (&amp;r, &amp;g, &amp;b);</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> *p++ = (((<span class='keyword'>int</span>)(r * 255.0) &lt;&lt; 16) |</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> ((<span class='keyword'>int</span>)(g * 255.0) &lt;&lt; 8) |</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> (<span class='keyword'>int</span>)(b * 255.0));</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> source = cairo_image_surface_create_for_data ((<span class='keyword'>unsigned</span> <span class='keyword'>char</span> *)buf,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> CAIRO_FORMAT_RGB24,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> width, height, stride);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> <span class='comment'>/* Now draw the value marker onto the source image, so that it</span></td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> <span class='comment'>* will get properly clipped at the edges of the ring</span></td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> source_cr = cairo_create (source);</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> r = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> g = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> b = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> hsv_to_rgb (&amp;r, &amp;g, &amp;b);</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>INTENSITY (r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> &gt; 0.5)</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> cairo_set_source_rgb (source_cr, 0., 0., 0.);</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> cairo_set_source_rgb (source_cr, 1., 1., 1.);</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> cairo_move_to (source_cr, center_x, center_y);</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> cairo_line_to (source_cr,</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> center_x + cos (priv-&gt;h * 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>) * priv-&gt;size / 2,</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> center_y - sin (priv-&gt;h * 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>) * priv-&gt;size / 2);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> cairo_stroke (source_cr);</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> cairo_destroy (source_cr);</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='comment'>/* Draw the ring using the source image */</span></td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> cairo_save (cr);</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> cairo_set_source_surface (cr, source, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> cairo_surface_destroy (source);</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> cairo_set_line_width (cr, priv-&gt;ring_width);</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> cairo_new_path (cr);</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> cairo_arc (cr,</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> center_x, center_y,</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> priv-&gt;size / 2. - priv-&gt;ring_width / 2.,</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> 0, 2 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> cairo_stroke (cr);</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> cairo_restore (cr);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> g_free (buf);</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"><span class='comment'>/* Converts an HSV triplet to an integer RGB triplet */</span></td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line">get_color (gdouble h,</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> gdouble s,</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> gdouble v,</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> gint *r,</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> gint *g,</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> gint *b)</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> hsv_to_rgb (&amp;h, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> *r = floor (h * 255 + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> *g = floor (s * 255 + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> *b = floor (v * 255 + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"><span class='directive'>#define <span class='macro'>SWAP(a, b, t)<span class='macro_popup'>((t) = (a), (a) = (b), (b) = (t))</span></span> ((t) = (a), (a) = (b), (b) = (t))</span></td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"><span class='directive'>#define <span class='macro'>LERP(a, b, v1, v2, i)<span class='macro_popup'>(((v2) - (v1) != 0) ? ((a) + ((b) - (a)) * ((i) - (v1)) / ((v2<br>) - (v1))) : (a))</span></span> (((v2) - (v1) != 0) \</span></td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='directive'>? ((a) + ((b) - (a)) * ((i) - (v1)) / ((v2) - (v1))) \</span></td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='directive'>: (a))</span></td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"><span class='comment'>/* Number of pixels we extend out from the edges when creating</span></td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='comment'>* color source to avoid artifacts</span></td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"><span class='directive'>#define <span class='macro'>PAD<span class='macro_popup'>3</span></span> 3</span></td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"><span class='comment'>/* Paints the HSV triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">paint_triangle (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> gboolean draw_focus)</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> gint hx, hy, sx, sy, vx, vy; <span class='comment'>/* HSV vertices */</span></td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> gint x1, y1, r1, g1, b1; <span class='comment'>/* First vertex in scanline order */</span></td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> gint x2, y2, r2, g2, b2; <span class='comment'>/* Second vertex */</span></td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> gint x3, y3, r3, g3, b3; <span class='comment'>/* Third vertex */</span></td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> gint t;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> guint32 *buf, *p, c;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> gint xl, xr, rl, rr, gl, gr, bl, br; <span class='comment'>/* Scanline data */</span></td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> gint xx, yy;</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> gint x_interp, y_interp;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> gint x_start, x_end;</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> cairo_surface_t *source;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> gdouble r, g, b;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> gint stride;</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>int</span> width, height;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> GtkStyleContext *context;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> width = gtk_widget_get_allocated_width (widget);</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> height = gtk_widget_get_allocated_height (widget);</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='comment'>/* Compute triangle's vertices */</span></td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> compute_triangle (hsv, &amp;hx, &amp;hy, &amp;sx, &amp;sy, &amp;vx, &amp;vy);</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> x1 = hx;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> y1 = hy;</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> get_color (priv-&gt;h, 1.0, 1.0, &amp;r1, &amp;g1, &amp;b1);</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> x2 = sx;</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> y2 = sy;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> get_color (priv-&gt;h, 1.0, 0.0, &amp;r2, &amp;g2, &amp;b2);</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> x3 = vx;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> y3 = vy;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> get_color (priv-&gt;h, 0.0, 1.0, &amp;r3, &amp;g3, &amp;b3);</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>if</span> (y2 &gt; y3)</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='macro'>SWAP (x2, x3, t)<span class='macro_popup'>((t) = (x2), (x2) = (x3), (x3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='macro'>SWAP (y2, y3, t)<span class='macro_popup'>((t) = (y2), (y2) = (y3), (y3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='macro'>SWAP (r2, r3, t)<span class='macro_popup'>((t) = (r2), (r2) = (r3), (r3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> <span class='macro'>SWAP (g2, g3, t)<span class='macro_popup'>((t) = (g2), (g2) = (g3), (g3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> <span class='macro'>SWAP (b2, b3, t)<span class='macro_popup'>((t) = (b2), (b2) = (b3), (b3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='keyword'>if</span> (y1 &gt; y3)</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> <span class='macro'>SWAP (x1, x3, t)<span class='macro_popup'>((t) = (x1), (x1) = (x3), (x3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> <span class='macro'>SWAP (y1, y3, t)<span class='macro_popup'>((t) = (y1), (y1) = (y3), (y3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> <span class='macro'>SWAP (r1, r3, t)<span class='macro_popup'>((t) = (r1), (r1) = (r3), (r3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> <span class='macro'>SWAP (g1, g3, t)<span class='macro_popup'>((t) = (g1), (g1) = (g3), (g3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> <span class='macro'>SWAP (b1, b3, t)<span class='macro_popup'>((t) = (b1), (b1) = (b3), (b3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> <span class='keyword'>if</span> (y1 &gt; y2)</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> <span class='macro'>SWAP (x1, x2, t)<span class='macro_popup'>((t) = (x1), (x1) = (x2), (x2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> <span class='macro'>SWAP (y1, y2, t)<span class='macro_popup'>((t) = (y1), (y1) = (y2), (y2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='macro'>SWAP (r1, r2, t)<span class='macro_popup'>((t) = (r1), (r1) = (r2), (r2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='macro'>SWAP (g1, g2, t)<span class='macro_popup'>((t) = (g1), (g1) = (g2), (g2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='macro'>SWAP (b1, b2, t)<span class='macro_popup'>((t) = (b1), (b1) = (b2), (b2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> <span class='comment'>/* Shade the triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width);</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> buf = <span class='macro'>g_new (guint32, height * stride / 4)<span class='macro_popup'>((guint32 *) g_malloc_n ((height * stride / 4), sizeof (guint32<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>for</span> (yy = 0; yy &lt; height; yy++)</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> p = buf + yy * width;</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> <span class='keyword'>if</span> (yy &gt;= y1 - <span class='macro'>PAD<span class='macro_popup'>3</span></span> &amp;&amp; yy &lt; y3 + <span class='macro'>PAD<span class='macro_popup'>3</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> y_interp = <span class='macro'>CLAMP (yy, y1, y3)<span class='macro_popup'>(((yy) &gt; (y3)) ? (y3) : (((yy) &lt; (y1)) ? (y1) : (yy)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> <span class='keyword'>if</span> (y_interp &lt; y2)</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> xl = <span class='macro'>LERP (x1, x2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((x1) + ((x2) - (x1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (x1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> rl = <span class='macro'>LERP (r1, r2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((r1) + ((r2) - (r1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (r1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> gl = <span class='macro'>LERP (g1, g2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((g1) + ((g2) - (g1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (g1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> bl = <span class='macro'>LERP (b1, b2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((b1) + ((b2) - (b1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (b1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> xl = <span class='macro'>LERP (x2, x3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((x2) + ((x3) - (x2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (x2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> rl = <span class='macro'>LERP (r2, r3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((r2) + ((r3) - (r2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (r2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> gl = <span class='macro'>LERP (g2, g3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((g2) + ((g3) - (g2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (g2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> bl = <span class='macro'>LERP (b2, b3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((b2) + ((b3) - (b2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (b2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> xr = <span class='macro'>LERP (x1, x3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((x1) + ((x3) - (x1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (x1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> rr = <span class='macro'>LERP (r1, r3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((r1) + ((r3) - (r1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (r1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> gr = <span class='macro'>LERP (g1, g3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((g1) + ((g3) - (g1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (g1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> br = <span class='macro'>LERP (b1, b3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((b1) + ((b3) - (b1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (b1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>if</span> (xl &gt; xr)</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> <span class='macro'>SWAP (xl, xr, t)<span class='macro_popup'>((t) = (xl), (xl) = (xr), (xr) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>SWAP (rl, rr, t)<span class='macro_popup'>((t) = (rl), (rl) = (rr), (rr) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='macro'>SWAP (gl, gr, t)<span class='macro_popup'>((t) = (gl), (gl) = (gr), (gr) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> <span class='macro'>SWAP (bl, br, t)<span class='macro_popup'>((t) = (bl), (bl) = (br), (br) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> x_start = <span class='macro'>MAX (xl - PAD, 0)<span class='macro_popup'>(((xl - 3) &gt; (0)) ? (xl - 3) : (0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> x_end = <span class='macro'>MIN (xr + PAD, width)<span class='macro_popup'>(((xr + 3) &lt; (width)) ? (xr + 3) : (width))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> x_start = <span class='macro'>MIN (x_start, x_end)<span class='macro_popup'>(((x_start) &lt; (x_end)) ? (x_start) : (x_end))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> c = (rl &lt;&lt; 16) | (gl &lt;&lt; 8) | bl;</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> <span class='keyword'>for</span> (xx = 0; xx &lt; x_start; xx++)</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> *p++ = c;</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> <span class='keyword'>for</span> (; xx &lt; x_end; xx++)</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> x_interp = <span class='macro'>CLAMP (xx, xl, xr)<span class='macro_popup'>(((xx) &gt; (xr)) ? (xr) : (((xx) &lt; (xl)) ? (xl) : (xx)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> *p++ = ((<span class='macro'>LERP (rl, rr, xl, xr, x_interp)<span class='macro_popup'>(((xr) - (xl) != 0) ? ((rl) + ((rr) - (rl)) * ((x_interp) - (<br>xl)) / ((xr) - (xl))) : (rl))</span></span> &lt;&lt; 16) |</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> (<span class='macro'>LERP (gl, gr, xl, xr, x_interp)<span class='macro_popup'>(((xr) - (xl) != 0) ? ((gl) + ((gr) - (gl)) * ((x_interp) - (<br>xl)) / ((xr) - (xl))) : (gl))</span></span> &lt;&lt; 8) |</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> <span class='macro'>LERP (bl, br, xl, xr, x_interp)<span class='macro_popup'>(((xr) - (xl) != 0) ? ((bl) + ((br) - (bl)) * ((x_interp) - (<br>xl)) / ((xr) - (xl))) : (bl))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> c = (rr &lt;&lt; 16) | (gr &lt;&lt; 8) | br;</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> <span class='keyword'>for</span> (; xx &lt; width; xx++)</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> *p++ = c;</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> source = cairo_image_surface_create_for_data ((<span class='keyword'>unsigned</span> <span class='keyword'>char</span> *)buf,</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> CAIRO_FORMAT_RGB24,</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> width, height, stride);</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> <span class='comment'>/* Draw a triangle with the image as a source */</span></td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> cairo_set_source_surface (cr, source, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> cairo_surface_destroy (source);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> cairo_move_to (cr, x1, y1);</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> cairo_line_to (cr, x2, y2);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> cairo_line_to (cr, x3, y3);</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> cairo_close_path (cr);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> cairo_fill (cr);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> g_free (buf);</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='comment'>/* Draw value marker */</span></td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> xx = floor (sx + (vx - sx) * priv-&gt;v + (hx - vx) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> yy = floor (sy + (vy - sy) * priv-&gt;v + (hy - vy) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> r = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> g = priv-&gt;s;</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> b = priv-&gt;v;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> hsv_to_rgb (&amp;r, &amp;g, &amp;b);</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> context = gtk_widget_get_style_context (widget);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> gtk_style_context_save (context);</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>INTENSITY (r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> &gt; 0.5)</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> gtk_style_context_add_class (context, <span class='string_literal'>"light-area-focus"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> cairo_set_source_rgb (cr, 0., 0., 0.);</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> gtk_style_context_add_class (context, <span class='string_literal'>"dark-area-focus"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> cairo_set_source_rgb (cr, 1., 1., 1.);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"><span class='directive'>#define <span class='macro'>RADIUS<span class='macro_popup'>4</span></span> 4</span></td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='directive'>#define <span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> 6</span></td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> cairo_new_path (cr);</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> cairo_arc (cr, xx, yy, <span class='macro'>RADIUS<span class='macro_popup'>4</span></span>, 0, 2 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> cairo_stroke (cr);</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>/* Draw focus outline */</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='keyword'>if</span> (draw_focus &amp;&amp; !priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> gint focus_pad;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, &amp;focus_width,</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> <span class='string_literal'>"focus-padding"</span>, &amp;focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> gtk_render_focus (context, cr,</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> xx - <span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> - focus_width - focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> yy - <span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> - focus_width - focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> 2 * (<span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> + focus_width + focus_pad),</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> 2 * (<span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> + focus_width + focus_pad));</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gtk_style_context_restore (context);</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"><span class='comment'>/* Paints the contents of the HSV color selector */</span></td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line">mate_hsv_draw (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> cairo_t *cr)</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> gboolean draw_focus;</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> draw_focus = gtk_widget_has_visible_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> paint_ring (hsv, cr);</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> paint_triangle (hsv, cr, draw_focus);</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='keyword'>if</span> (draw_focus &amp;&amp; priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> GtkStyleContext *context;</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> context = gtk_widget_get_style_context (widget);</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> gtk_render_focus (context, cr, 0, 0,</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> gtk_widget_get_allocated_width (widget),</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> gtk_widget_get_allocated_height (widget));</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line">mate_hsv_focus (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> GtkDirectionType dir)</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='keyword'>if</span> (!gtk_widget_has_focus (widget))</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='keyword'>if</span> (dir == GTK_DIR_TAB_BACKWARD)</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> gtk_widget_grab_focus (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>switch</span> (dir)</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_UP:</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_DOWN:</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_LEFT:</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_TAB_BACKWARD:</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_RIGHT:</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_TAB_FORWARD:</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> <span class='comment'>* mate_hsv_new:</span></td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='comment'>* Creates a new HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='comment'>* Returns: A newly-created HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line">GtkWidget*</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line">mate_hsv_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> g_object_new (<span class='macro'>MATE_TYPE_HSV<span class='macro_popup'>(mate_hsv_get_type ())</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='comment'>* mate_hsv_set_color:</span></td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> <span class='comment'>* @h: Hue</span></td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> <span class='comment'>* @s: Saturation</span></td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> <span class='comment'>* @v: Value</span></td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> <span class='comment'>* Sets the current color in an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='comment'>* Color component values must be in the [0.0, 1.0] range.</span></td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line">mate_hsv_set_color (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> gdouble h,</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> gdouble s,</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> gdouble v)</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> <span class='macro'>g_return_if_fail (h &gt;= 0.0 &amp;&amp; h &lt;= 1.0)<span class='macro_popup'>do { if ((h &gt;= 0.0 &amp;&amp; h &lt;= 1.0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "h &gt;= 0.0 &amp;&amp; h &lt;= 1.0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='macro'>g_return_if_fail (s &gt;= 0.0 &amp;&amp; s &lt;= 1.0)<span class='macro_popup'>do { if ((s &gt;= 0.0 &amp;&amp; s &lt;= 1.0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "s &gt;= 0.0 &amp;&amp; s &lt;= 1.0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='macro'>g_return_if_fail (v &gt;= 0.0 &amp;&amp; v &lt;= 1.0)<span class='macro_popup'>do { if ((v &gt;= 0.0 &amp;&amp; v &lt;= 1.0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "v &gt;= 0.0 &amp;&amp; v &lt;= 1.0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> priv-&gt;h = h;</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> priv-&gt;s = s;</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> priv-&gt;v = v;</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> g_signal_emit (hsv, hsv_signals[CHANGED], 0);</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='comment'>* mate_hsv_get_color:</span></td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> <span class='comment'>* @h: (out): Return value for the hue</span></td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> <span class='comment'>* @s: (out): Return value for the saturation</span></td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='comment'>* @v: (out): Return value for the value</span></td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> <span class='comment'>* Queries the current color in an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> <span class='comment'>* Returned values will be in the [0.0, 1.0] range.</span></td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line">mate_hsv_get_color (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>double</span> *h,</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>double</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='keyword'>double</span> *v)</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (h)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> *h = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> <span class='keyword'>if</span> (s)</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> *s = priv-&gt;s;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> <span class='keyword'>if</span> (v)</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> *v = priv-&gt;v;</td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> <span class='comment'>* mate_hsv_set_metrics:</span></td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='comment'>* @size: Diameter for the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> <span class='comment'>* @ring_width: Width of the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> <span class='comment'>* Sets the size and ring width of an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line">mate_hsv_set_metrics (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> gint size,</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> gint ring_width)</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>int</span> same_size;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='macro'>g_return_if_fail (size &gt; 0)<span class='macro_popup'>do { if ((size &gt; 0)) { } else { g_return_if_fail_warning (<br>"MateDesktop", ((const char*) (__func__)), "size &gt; 0"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='macro'>g_return_if_fail (ring_width &gt; 0)<span class='macro_popup'>do { if ((ring_width &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "ring_width &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='macro'>g_return_if_fail (2 * ring_width + 1 &lt;= size)<span class='macro_popup'>do { if ((2 * ring_width + 1 &lt;= size)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "2 * ring_width + 1 &lt;= size"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> same_size = (priv-&gt;size == size);</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> priv-&gt;size = size;</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> priv-&gt;ring_width = ring_width;</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> <span class='keyword'>if</span> (same_size)</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> gtk_widget_queue_resize (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> <span class='comment'>* mate_hsv_get_metrics:</span></td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='comment'>* @size: (out): Return value for the diameter of the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='comment'>* @ring_width: (out): Return value for the width of the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> <span class='comment'>* Queries the size and ring width of an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line">mate_hsv_get_metrics (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> gint *size,</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> gint *ring_width)</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>if</span> (size)</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> *size = priv-&gt;size;</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> <span class='keyword'>if</span> (ring_width)</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> *ring_width = priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='comment'>* mate_hsv_is_adjusting:</span></td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='comment'>* @hsv: A #MateHSV</span></td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> <span class='comment'>* An HSV color selector can be said to be adjusting if multiple rapid</span></td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> <span class='comment'>* changes are being made to its value, for example, when the user is</span></td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='comment'>* adjusting the value with the mouse. This function queries whether</span></td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='comment'>* the HSV color selector is being adjusted or not.</span></td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='comment'>* Returns: %TRUE if clients can ignore changes to the color value,</span></td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='comment'>* since they may be transitory, or %FALSE if they should consider</span></td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> <span class='comment'>* the color value status to be final.</span></td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line">mate_hsv_is_adjusting (MateHSV *hsv)</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_HSV (hsv), FALSE)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return ((0)); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> <span class='keyword'>return</span> priv-&gt;mode != DRAG_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line">mate_hsv_move (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> GtkDirectionType dir)</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> gdouble hue, sat, val;</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> gint hx, hy, sx, sy, vx, vy; <span class='comment'>/* HSV vertices */</span></td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> gint x, y; <span class='comment'>/* position in triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> hue = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> sat = priv-&gt;s;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> val = priv-&gt;v;</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> compute_triangle (hsv, &amp;hx, &amp;hy, &amp;sx, &amp;sy, &amp;vx, &amp;vy);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> x = floor (sx + (vx - sx) * priv-&gt;v + (hx - vx) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> y = floor (sy + (vy - sy) * priv-&gt;v + (hy - vy) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"><span class='directive'>#define <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span> 0.002</span></td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>switch</span> (dir)</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_UP:</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> hue += <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> y -= 1;</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_DOWN:</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> hue -= <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> y += 1;</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_LEFT:</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> hue += <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> x -= 1;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_RIGHT:</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> hue -= <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span></td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> x += 1;</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> <span class='comment'>/* we don't care about the tab directions */</span></td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='comment'>/* Wrap */</span></td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> <span class='keyword'>if</span> (hue &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> hue = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (hue &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> hue = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> mate_hsv_set_color (hsv, hue, sat, val);</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-425c9c.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-425c9c.html
new file mode 100644
index 0000000..342d919
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-425c9c.html
@@ -0,0 +1,4660 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-item.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-desktop-item.c -->
+
+<!-- FILENAME mate-desktop-item.c -->
+
+<!-- FUNCTIONNAME escape_string_and_dup -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 425c9cad1edbd836e7b196f939607e1c -->
+
+<!-- BUGLINE 3129 -->
+
+<!-- BUGCOLUMN 9 -->
+
+<!-- BUGPATHLENGTH 27 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-desktop-item.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 3129, column 9</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-item.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-item.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"811": 1, "812": 1, "813": 1, "814": 1, "815": 1, "816": 1, "817": 1, "819": 1, "824": 1, "827": 1, "829": 1, "837": 1, "3099": 1, "3100": 1, "3101": 1, "3102": 1, "3103": 1, "3104": 1, "3106": 1, "3109": 1, "3110": 1, "3111": 1, "3112": 1, "3114": 1, "3115": 1, "3116": 1, "3117": 1, "3118": 1, "3127": 1, "3128": 1, "3129": 1, "3131": 1, "3132": 1, "3133": 1, "3134": 1, "3138": 1, "3816": 1, "3817": 1, "3818": 1, "3819": 1, "3820": 1, "3821": 1, "3823": 1, "3824": 1, "3825": 1, "3826": 1, "3829": 1, "3830": 1, "3831": 1, "3832": 1, "3833": 1, "3834": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 61,59,55,50,49,46,44,41,39,36,34,33,28,25,23,22,19,17,16,12,8,5,5,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; c-set-style: linux indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/* mate-desktop-item.c - MATE Desktop File Representation</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>Copyright (C) 1999, 2000 Red Hat Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>Copyright (C) 2001 Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>All rights reserved.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>This file is part of the Mate Library.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>Developed by Elliot Lee &lt;[email protected]&gt; and Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>The Mate Library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>The Mate Library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>License along with the Mate Library; see the file COPYING.LIB. If not,</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>Boston, MA 02110-1301, USA. */</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>@NOTATION@</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;limits.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;ctype.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define SN_API_NOT_YET_FROZEN</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;libsn/sn.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#undef MATE_DISABLE_DEPRECATED</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include &lt;mate-desktop-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _MateDesktopItem {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>int</span> refcount;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='comment'>/* all languages used */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList *languages;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> MateDesktopItemType type;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>/* `modified' means that the ditem has been</span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>* modified since the last save. */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gboolean modified;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Keys of the main section only */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GList *sections;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* This includes ALL keys, including</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>* other sections, separated by '/' */</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GHashTable *main_hash;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>char</span> *location;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='comment'>/* If mtime is set to this, set_location won't update mtime,</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='comment'>* this is to be used internally only. */</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='directive'>#define <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span> ((gint64)-2)</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">} Section;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> ENCODING_UNKNOWN,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> ENCODING_UTF8,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> ENCODING_LEGACY_MIXED</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">} Encoding;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* IO reading utils, that look like the libc buffered io stuff</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='directive'>#define <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span> (32 * 1024)</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>char</span> *buf;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> gboolean buf_needs_free;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gboolean past_first_read;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gboolean eof;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> guint64 size;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">} ReadBuf;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> gboolean ditem_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_desktop_item_set_location_gfile (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> GFile *file);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">readbuf_getc (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;eof)</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> rb-&gt;pos == rb-&gt;size) {</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> gssize bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> bytes_read = 0;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> bytes_read = g_input_stream_read (<span class='macro'>G_INPUT_STREAM (rb-&gt;stream)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_input_stream_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> rb-&gt;buf,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='comment'>/* FIXME: handle errors other than EOF */</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (bytes_read &lt;= 0) {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> rb-&gt;eof = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size != 0)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> rb-&gt;past_first_read = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> rb-&gt;size = bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> (guchar) rb-&gt;buf[rb-&gt;pos++];</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='comment'>/* Note, does not include the trailing \n */</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">readbuf_gets (<span class='keyword'>char</span> *buf, gsize bufsize, ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='macro'>g_return_val_if_fail (buf != NULL, NULL)<span class='macro_popup'>do { if ((buf != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "buf != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>g_return_val_if_fail (rb != NULL, NULL)<span class='macro_popup'>do { if ((rb != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rb != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> buf[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> c = readbuf_getc (rb);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> || c == '\n')</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> buf[pos++] = c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> } <span class='keyword'>while</span> (pos &lt; bufsize-1);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; pos == 0)</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> buf[pos++] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='keyword'>return</span> buf;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">readbuf_open (GFile *file, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> stream = g_file_read (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error reading file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error reading file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> rb-&gt;stream = stream;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> rb-&gt;file = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> rb-&gt;uri = uri;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> rb-&gt;buf = g_malloc (<span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> rb-&gt;buf_needs_free = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='comment'>/* rb-&gt;size = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">readbuf_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri, <span class='keyword'>const</span> <span class='keyword'>char</span> *string, gssize length)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= 0, NULL)<span class='macro_popup'>do { if ((length &gt;= 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>/* rb-&gt;file = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* rb-&gt;stream = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> rb-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> rb-&gt;buf = (<span class='keyword'>char</span> *) string;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>/* rb-&gt;buf_needs_free = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> rb-&gt;size = length;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">readbuf_rewind (ReadBuf *rb, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> rb-&gt;eof = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (!rb-&gt;past_first_read)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> rb-&gt;size = 0;</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (g_seekable_seek (<span class='macro'>G_SEEKABLE (rb-&gt;stream)<span class='macro_popup'>((((GSeekable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_seekable_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> 0, G_SEEK_SET, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> rb-&gt;stream = g_file_read (rb-&gt;file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> g_set_error (</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> error, <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error rewinding file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error rewinding file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> rb-&gt;uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line">readbuf_close (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_object_unref (rb-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g_free (rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;buf_needs_free)</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (rb-&gt;buf);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> g_free (rb);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">type_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *type)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>switch</span> (type [0]) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>case</span> 'A':</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Application"</span>))</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>case</span> 'L':</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Link"</span>))</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_LINK;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"FSDevice"</span>))</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> 'M':</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"MimeType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Directory"</span>))</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> 'S':</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Service"</span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"ServiceType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_OTHER;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* mate_desktop_item_new:</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='comment'>* Creates a MateDesktopItem object. The reference count on the returned value is set to '1'.</span></td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* Returns: The new MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">mate_desktop_item_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> retval = <span class='macro'>g_new0 (MateDesktopItem, 1)<span class='macro_popup'>((MateDesktopItem *) g_malloc0_n ((1), sizeof (MateDesktopItem<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> retval-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* These are guaranteed to be set */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned</span></td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>* here is the name of an application or</span></td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>* a document */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No name"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No name"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='string_literal'>"1.0"</span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> retval-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">dup_section (Section *sec)</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> Section *retval = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> retval-&gt;name = <span class='macro'>g_strdup (sec-&gt;name)<span class='macro_popup'>g_strdup_inline (sec-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> retval-&gt;keys = g_list_copy (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">copy_string_hash (gpointer key, gpointer value, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GHashTable *copy = user_data;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> g_hash_table_replace (copy,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>* mate_desktop_item_copy:</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='comment'>* @item: The item to be copied</span></td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* Creates a copy of a MateDesktopItem. The new copy has a refcount of 1.</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* Note: Section stack is NOT copied.</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='comment'>* Returns: The new copy</span></td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">mate_desktop_item_copy (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> retval = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> retval-&gt;type = item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> retval-&gt;modified = item-&gt;modified;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> retval-&gt;location = <span class='macro'>g_strdup (item-&gt;location)<span class='macro_popup'>g_strdup_inline (item-&gt;location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> retval-&gt;mtime = item-&gt;mtime;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> retval-&gt;launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='comment'>/* Languages */</span></td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> retval-&gt;languages = g_list_copy (item-&gt;languages);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='comment'>/* Keys */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> retval-&gt;keys = g_list_copy (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>/* Sections */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> retval-&gt;sections = g_list_copy (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> li-&gt;data = dup_section (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> g_hash_table_foreach (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> copy_string_hash,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> retval-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line">read_sort_order (MateDesktopItem *item, GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>char</span> buf[<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".order"</span>);</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> rb = readbuf_open (child, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>if</span> (str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> str = g_string_new (buf);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>g_string_append (str, buf)<span class='macro_popup'>(__builtin_constant_p (buf) ? __extension__ ({ const char * const<br> __val = (buf); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, buf, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='macro'>g_string_append_c (str, ';')<span class='macro_popup'>g_string_append_c_inline (str, ';')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> mate_desktop_item_set_string (item, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>g_string_free (str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free<br>) ((str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line">make_fake_directory (GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> mate_desktop_item_set_entry_type (item,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> MATE_DESKTOP_ITEM_TYPE_DIRECTORY);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> item-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>; <span class='comment'>/* it doesn't exist, we know that */</span></td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> mate_desktop_item_set_location_gfile (item, child);</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> read_sort_order (item, dir);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_file:</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>* @file: The filename or directory path to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>* This function loads 'file' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">mate_desktop_item_new_from_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *file,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> retval = mate_desktop_item_new_from_gfile (gfile, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* @uri: URI to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* This function loads 'uri' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">mate_desktop_item_new_from_uri (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((uri != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> retval = mate_desktop_item_new_from_gfile (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line">mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> GFile *subfn;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> GFile *parent;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gint64 mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span><span class='string_literal'>","</span><span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp; type != G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_INVALID_TYPE,</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"File '%s' is not a regular file or directory."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "File '%s' is not a regular file or directory."<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> uri);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> GFileInfo *child_info;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> child = g_file_get_child (file, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> child_info = g_file_query_info (child,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>if</span> (child_info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> make_fake_directory (file);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (child_info,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_object_unref (child_info);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> subfn = child;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> subfn = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> rb = readbuf_open (subfn, error);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> ! mate_desktop_item_exists (retval)) {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> mate_desktop_item_unref (retval);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> retval-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> mate_desktop_item_set_location_gfile (retval, subfn);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> retval-&gt;mtime = mtime;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> parent = g_file_get_parent (file);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (parent != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> read_sort_order (retval, parent);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* @string: string to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>* @length: length of string, or -1 to use strlen</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* @error: place to put errors</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='comment'>* This function turns the contents of the string into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">mate_desktop_item_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> gssize length,</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= -1, NULL)<span class='macro_popup'>do { if ((length &gt;= -1)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= -1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (length == -1) {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> length = strlen (string);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> rb = readbuf_new_from_string (uri, string, length);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>/* FIXME: Sort order? */</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">lookup_desktop_file_in_data_dir (<span class='keyword'>const</span> <span class='keyword'>char</span> *desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> path = g_build_filename (data_dir, <span class='string_literal'>"applications"</span>, desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (path, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">file_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *user_data_dir;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>char</span> *retval;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> user_data_dir = g_get_user_data_dir ();</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, user_data_dir))) {</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>for</span> (i = 0; system_data_dirs[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, system_data_dirs[i]))) {</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_basename:</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='comment'>* @basename: The basename of the MateDesktopItem to load.</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='comment'>* This function loads 'basename' from a system data directory and</span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='comment'>* returns its MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">mate_desktop_item_new_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> <span class='keyword'>char</span> *file;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='macro'>g_return_val_if_fail (basename != NULL, NULL)<span class='macro_popup'>do { if ((basename != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "basename != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!(file = file_from_basename (basename))) {</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Cannot find file '%s'"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Cannot find file '%s'"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> basename);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> retval = mate_desktop_item_new_from_file (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> g_free (file);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>* mate_desktop_item_save:</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='comment'>* @under: A new uri (location) for this #MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='comment'>* @force: Save even if it wasn't modified</span></td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='comment'>* @error: #GError return</span></td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='comment'>* Writes the specified item to disk. If the 'under' is NULL, the original</span></td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='comment'>* location is used. It sets the location of this entry to point to the</span></td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>* new location.</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>* Returns: boolean. %TRUE if the file was saved, %FALSE otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">mate_desktop_item_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *under,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> gboolean force,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span id="start60"><span class='keyword'>const</span></span> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span id="start59"><span id="end60"><span class='keyword'>if</span></span></span> (<span id="start58"><span class="mrange"><span id="end59">under</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'under' is not equal to NULL</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> ! force &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> ! item-&gt;modified)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span id="start57"><span id="end58"><span class='keyword'>if</span></span></span> (<span id="start56"><span id="end57"><span class='variable'>under<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>1.1</div></td><td>'under' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> uri = item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span id="start53"><span id="end54"><span id="start55"><span id="end56">uri</span></span></span></span> = <span id="start54"><span id="end55">under</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span id="start52"><span id="end53"><span class='keyword'>if</span></span></span> (<span id="start51"><span id="end52"><span class='variable'>uri<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>2.1</div></td><td>'uri' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_FILENAME,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No filename to save to"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No filename to save to"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span id="start50"><span id="end51"><span class='keyword'>if</span></span></span> ( ! <span class="mrange"><span id="end49">ditem_save</span> (<span id="start49"><span id="end50">item</span></span>, uri, error)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'ditem_save'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> item-&gt;mtime = g_get_real_time () / <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>* mate_desktop_item_ref:</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='comment'>* Description: Increases the reference count of the specified item.</span></td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='comment'>* Returns: the newly referenced @item</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line">mate_desktop_item_ref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line">free_section (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> Section *section = data;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_free (section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> section-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_list_free_full (section-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> g_free (section);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='comment'>* mate_desktop_item_unref:</span></td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='comment'>* Decreases the reference count of the specified item, and destroys the item if there are no more references left.</span></td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">mate_desktop_item_unref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> item-&gt;refcount--;</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>if</span>(item-&gt;refcount != 0)</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_list_free_full (item-&gt;languages, g_free);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> item-&gt;languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> g_list_free_full (item-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> g_list_free_full (item-&gt;sections, (GDestroyNotify) free_section);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> item-&gt;sections = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> g_hash_table_destroy (item-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> item-&gt;main_hash = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> item-&gt;location = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_free (item);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line">find_section (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (strcmp (section, <span class='string_literal'>"Desktop Entry"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> sec = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>if</span> (strcmp (sec-&gt;name, section) == 0)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> sec = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> sec-&gt;name = <span class='macro'>g_strdup (section)<span class='macro_popup'>g_strdup_inline (section)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> item-&gt;sections = g_list_append (item-&gt;sections, sec);</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='comment'>/* Don't mark the item modified, this is just an empty section,</span></td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='comment'>* it won't be saved even */</span></td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line">section_from_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (key == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> p = strchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> name = g_strndup (key, p - key);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> sec = find_section (item, name);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line">key_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>char</span> *p = strrchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='keyword'>return</span> p+1;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span> key;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">lookup (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line">lookup_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='keyword'>return</span> lookup (item, key);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> ret = lookup (item, full);</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">lookup_best_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> ret = lookup_locale (item, key, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>if</span> (ret != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line">set (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> Section *sec = section_from_key (item, key);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (sec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> sec-&gt;keys = g_list_append</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> (sec-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>g_strdup (key_basename (key))<span class='macro_popup'>g_strdup_inline (key_basename (key))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (sec-&gt;keys, key_basename (key),</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> sec-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> g_list_delete_link (sec-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> item-&gt;keys = g_list_append (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> (item-&gt;keys, key, (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> item-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> g_list_delete_link (item-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line">set_locale (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> set (item, key, value);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> set (item, full, value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='comment'>/* add the locale to the list of languages if it wasn't there</span></td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* before */</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> item-&gt;languages = g_list_prepend (item-&gt;languages,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>g_strdup (locale)<span class='macro_popup'>g_strdup_inline (locale)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">list_to_vector (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='keyword'>int</span> len = g_slist_length (list);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> argv = <span class='macro'>g_new0 (<span class='keyword'>char</span> *, len+1)<span class='macro_popup'>((char * *) g_malloc0_n ((len+1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>for</span> (i = 0, li = list;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> li = li-&gt;next, i++) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> argv[i] = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> argv[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>return</span> argv;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">make_args (GList *files)</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> GSList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class='keyword'>for</span> (li = files; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *file = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> gfile = g_file_new_for_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> list = g_slist_prepend (list, gfile);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>return</span> g_slist_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line">free_args (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>for</span> (li = list; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_unref (<span class='macro'>G_FILE (li-&gt;data)<span class='macro_popup'>((((GFile*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((li-&gt;data)), ((g_file_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">escape_single_quotes (<span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> gboolean in_double_quotes)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GString *gs;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *pre = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *post = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; ! in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> pre = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> post = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> pre = <span class='string_literal'>"\"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> post = <span class='string_literal'>"'\""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (strchr (s, '\'') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='keyword'>return</span> g_strconcat (pre, s, post, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gs = g_string_new (pre);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (*p == '\'')</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>g_string_append (gs, <span class='string_literal'>"'\\''"</span>)<span class='macro_popup'>(__builtin_constant_p ("'\\''") ? __extension__ ({ const char<br> * const __val = ("'\\''"); g_string_append_len_inline (gs, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (gs, "'\\''"<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='macro'>g_string_append (gs, post)<span class='macro_popup'>(__builtin_constant_p (post) ? __extension__ ({ const char * const<br> __val = (post); g_string_append_len_inline (gs, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (gs, post, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> URI_TO_LOCAL_BASENAME</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">} ConversionType;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line">convert_uri (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> ConversionType conversion)</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>switch</span> (conversion) {</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>case</span> URI_TO_STRING:</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> retval = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_PATH:</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> retval = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_DIRNAME:</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='keyword'>char</span> *local_path;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> local_path = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> retval = g_path_get_dirname (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_BASENAME:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> retval = g_file_get_basename (file);</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-desktop-item.c"<br>, 1203, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> ADDED_NONE = 0,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> ADDED_SINGLE,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> ADDED_ALL</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line">} AddedStatus;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line">append_all_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='keyword'>for</span> (l = args; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>char</span> *converted;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (!(converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>" "</span>)<span class='macro_popup'>(__builtin_constant_p (" ") ? __extension__ ({ const char * const<br> __val = (" "); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, " ", (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> escaped = escape_single_quotes (converted,</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>return</span> ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">append_first_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>char</span> *converted = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>for</span> (l = *arg_ptr; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>if</span> ((converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> *arg_ptr = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (!converted)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>return</span> added_status;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> escaped = escape_single_quotes (converted, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> added_status != ADDED_ALL ? ADDED_SINGLE : added_status;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">do_percent_subst (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *arg,</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> <span class='keyword'>char</span> *esc;</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cs;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>if</span> (arg[0] != '%' || arg[1] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='keyword'>switch</span> (arg[1]) {</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='keyword'>case</span> '%':</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>case</span> 'U':</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>case</span> 'N':</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> <span class='keyword'>case</span> 'f':</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> 'u':</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>case</span> 'd':</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>case</span> 'm':</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says this is deprecated</span></td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> <span class='comment'>* and replace with --miniicon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_MINI_ICON<span class='macro_popup'>"MiniIcon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--miniicon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--miniicon=") ? __extension__ ({ const<br> char * const __val = ("--miniicon="); g_string_append_len_inline<br> (str, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "--miniicon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>case</span> 'i':</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says replace with --icon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--icon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--icon=") ? __extension__ ({ const char<br> * const __val = ("--icon="); g_string_append_len_inline (str<br>, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !<br>(__val))) : (gssize) -1); }) : g_string_append_len_inline (str<br>, "--icon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='keyword'>case</span> 'c':</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>case</span> 'k':</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> esc = escape_single_quotes (item-&gt;location, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>case</span> 'v':</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_DEV<span class='macro_popup'>"Dev"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='comment'>/* Maintain special characters - e.g. "%20" */</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_ascii_isdigit (arg [1])<span class='macro_popup'>((g_ascii_table[(guchar) (arg [1])] &amp; G_ASCII_DIGIT) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line">expand_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> gboolean escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> gboolean single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> gboolean double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> GString *gs = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (escape) {</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\\') {</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot)</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> escape = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\'') {</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> single_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (single_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '"') {</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> double_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '%') {</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='keyword'>if</span> (do_percent_subst (item, p, gs,</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> single_quot, double_quot,</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> args, arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> added_status)) {</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"><span class='comment'>/*Functions in this code block should only ever be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line">sn_error_trap_push (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line">sn_error_trap_pop (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line">make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>int</span> i, j;</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>int</span> desktop_startup_id_len;</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, i + 2)<span class='macro_popup'>((char * *) g_malloc_n ((i + 2), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> desktop_startup_id_len = strlen (<span class='string_literal'>"DESKTOP_STARTUP_ID"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='keyword'>for</span> (i = 0, j = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp[i], <span class='string_literal'>"DESKTOP_STARTUP_ID"</span>, desktop_startup_id_len) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> retval[j] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> retval[j] = g_strdup_printf (<span class='string_literal'>"DESKTOP_STARTUP_ID=%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> sn_launcher_context_get_startup_id (sn_context));</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> retval[j] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"><span class='comment'>/* This should be fairly long, as it's confusing to users if a startup</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='comment'>* ends when it shouldn't (it appears that the startup failed, and</span></td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='comment'>* they have to relaunch the app). Also the timeout only matters when</span></td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> <span class='comment'>* there are bugs and apps don't end their own startup sequence.</span></td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>* This timeout is a "last resort" timeout that ignores whether the</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* startup sequence has shown activity or not. Marco and the</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>* tasklist have smarter, and correspondingly able-to-be-shorter</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='comment'>* timeouts. The reason our timeout is dumb is that we don't monitor</span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='comment'>* the sequence (don't use an SnMonitorContext)</span></td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> 30 /* seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span> (<span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> * 1000)</span></td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> GSList *contexts;</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> guint timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line">} StartupTimeoutData;</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">free_startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> g_slist_free_full (std-&gt;contexts, (GDestroyNotify) sn_launcher_context_unref);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (std-&gt;timeout_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_source_remove (std-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> g_free (std);</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line">startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GSList *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> <span class='keyword'>int</span> min_timeout;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> min_timeout = <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> gint64 now = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> GTimeVal now;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> g_get_current_time (&amp;now);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> tmp = std-&gt;contexts;</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>while</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> SnLauncherContext *sn_context = tmp-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> GSList *next = tmp-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> time_t tv_sec;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> suseconds_t tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context, &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> tv = (tv_sec * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>) + tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> elapsed = (<span class='keyword'>double</span>) (now - tv) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>long</span> tv_sec, tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> elapsed =</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> ((((<span class='keyword'>double</span>)now.tv_sec - tv_sec) * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span> +</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> (now.tv_usec - tv_usec))) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (elapsed &gt;= <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> std-&gt;contexts = g_slist_remove (std-&gt;contexts,</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> sn_launcher_context_complete (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> min_timeout = <span class='macro'>MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed))<span class='macro_popup'>(((min_timeout) &lt; (((30 * 1000) - elapsed))) ? (min_timeout<br>) : (((30 * 1000) - elapsed)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> tmp = next;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='comment'>/* we'll use seconds for the timeout */</span></td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> <span class='keyword'>if</span> (min_timeout &lt; 1000)</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> min_timeout = 1000;</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> <span class='keyword'>if</span> (std-&gt;contexts == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> std-&gt;timeout_id = g_timeout_add_seconds (min_timeout / 1000,</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> std);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>/* always remove this one, but we may have reinstalled another one. */</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line">add_startup_timeout (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> SnLauncherContext *sn_context)</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> StartupTimeoutData *data;</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> data = g_object_get_data (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> data = <span class='macro'>g_new (StartupTimeoutData, 1)<span class='macro_popup'>((StartupTimeoutData *) g_malloc_n ((1), sizeof (StartupTimeoutData<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> data-&gt;screen = screen;</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> data-&gt;contexts = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> data-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> data, free_startup_timeout);</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> sn_launcher_context_ref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> data-&gt;contexts = g_slist_prepend (data-&gt;contexts, sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> <span class='keyword'>if</span> (data-&gt;timeout_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> data-&gt;timeout_id = g_timeout_add_seconds (</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION - functions should only be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">stringify_uris (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> append_all_converted (str, URI_TO_STRING, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line">stringify_files (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> append_all_converted (str, URI_TO_LOCAL_PATH, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line">make_environment_for_screen (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>char</span> *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='keyword'>int</span> display_index = -1;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> <span class='keyword'>int</span> i, env_len;</td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> <span class='macro'>g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((screen)); GType __t = ((gdk_screen_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "GDK_IS_SCREEN (screen)"); return (((void*)0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp [i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> <span class='keyword'>for</span> (env_len = 0; envp [env_len]; env_len++)</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp [env_len], <span class='string_literal'>"DISPLAY"</span>, strlen (<span class='string_literal'>"DISPLAY"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> display_index = env_len;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, env_len + 1)<span class='macro_popup'>((char * *) g_malloc_n ((env_len + 1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> retval [env_len] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> display_name = <span class='macro'>g_strdup (gdk_display_get_name (display))<span class='macro_popup'>g_strdup_inline (gdk_display_get_name (display))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; env_len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (i == display_index)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> retval [i] = g_strconcat (<span class='string_literal'>"DISPLAY="</span>, display_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> retval [i] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='macro'>g_assert (i == env_len)<span class='macro_popup'>do { if (i == env_len) ; else g_assertion_message_expr ("MateDesktop"<br>, "mate-desktop-item.c", 1728, ((const char*) (__func__)), "i == env_len"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> g_free (display_name);</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line">dummy_child_watch (GPid pid,</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> gint status,</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='comment'>/* Nothing, this is just to ensure we don't double fork</span></td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='comment'>* and break pkexec:</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=675789</span></td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">ditem_execute (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec,</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> gboolean launch_only_one,</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> gboolean use_current_dir,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> gboolean append_uris,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gboolean append_paths,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> gboolean do_not_reap_child,</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span class='keyword'>char</span> **free_me = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> <span class='keyword'>char</span> **real_argv;</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>int</span> i, ret;</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='keyword'>char</span> **term_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='keyword'>int</span> term_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> GSList *vector_list;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> GSList *args, *arg_ptr;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> AddedStatus added_status;</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>char</span> **temp_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='keyword'>int</span> temp_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='keyword'>char</span> *new_exec, *uris, *temp;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='keyword'>char</span> *exec_locale;</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='keyword'>int</span> launched = 0;</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> GPid pid;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> SnLauncherContext *sn_context;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> SnDisplay *sn_display;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *startup_class;</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> <span class='macro'>g_return_val_if_fail (item, -1)<span class='macro_popup'>do { if ((item)) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "item"); return (-1); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> working_dir = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_PATH<span class='macro_popup'>"Path"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='keyword'>if</span> (working_dir &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> !g_file_test (working_dir, G_FILE_TEST_IS_DIR))</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span class='keyword'>if</span> (working_dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !use_current_dir)</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> working_dir = g_get_home_dir ();</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span class='keyword'>if</span> (mate_desktop_item_get_boolean (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *options =</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL_OPTIONS<span class='macro_popup'>"TerminalOptions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> <span class='keyword'>if</span> (options != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_shell_parse_argv (options,</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> &amp;term_argc,</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> &amp;term_argv,</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> <span class='comment'>/* error */</span>);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='comment'>/* ignore errors */</span></td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> mate_desktop_prepend_terminal_to_vector (&amp;term_argc, &amp;term_argv);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> args = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> arg_ptr = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> <span class='keyword'>if</span> (screen)</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> sn_display = sn_display_new (<span class='macro'>GDK_DISPLAY_XDISPLAY (gdkdisplay)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdkdisplay))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> sn_error_trap_push,</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> sn_error_trap_pop);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='comment'>/* Only initiate notification if desktop file supports it.</span></td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='comment'>* (we could avoid setting up the SnLauncherContext if we aren't going</span></td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='comment'>* to initiate, but why bother)</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> startup_class = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"StartupWMClass"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> <span class='keyword'>if</span> (startup_class ||</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> mate_desktop_item_get_boolean (item, <span class='string_literal'>"StartupNotify"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> sn_context = sn_launcher_context_new (sn_display,</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> screen ? gdk_x11_screen_get_screen_number (screen) :</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> <span class='macro'>DefaultScreen (GDK_DISPLAY_XDISPLAY (gdkdisplay))<span class='macro_popup'>(((_XPrivDisplay)((gdk_x11_display_get_xdisplay (gdkdisplay))<br>))-&gt;default_screen)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_GENERIC_NAME<span class='macro_popup'>"GenericName"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> <span class='keyword'>if</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='keyword'>char</span> *description;</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> sn_launcher_context_set_name (sn_context, name);</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> description = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Starting %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Starting %s"))</span></span>, name);</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> sn_launcher_context_set_description (sn_context, description);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> g_free (description);</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> icon = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>if</span> (icon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> sn_launcher_context_set_icon_name (sn_context, icon);</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> sn_launcher_context_set_workspace (sn_context, workspace);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (startup_class != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> sn_launcher_context_set_wmclass (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> startup_class);</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> sn_display = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> <span class='keyword'>if</span> (screen) {</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> envp = make_environment_for_screen (screen, envp);</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> exec_locale = g_filename_from_utf8 (exec, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> <span class='keyword'>if</span> (exec_locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> exec_locale = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> added_status = ADDED_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> new_exec = expand_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> exec_locale,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> args, &amp;arg_ptr, &amp;added_status);</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_uris) {</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> uris = stringify_uris (args);</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> <span class='comment'>/* append_uris and append_paths are mutually exlusive */</span></td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_paths) {</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> uris = stringify_files (args);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> <span class='keyword'>if</span> (launched &gt; 0 &amp;&amp; added_status == ADDED_NONE) {</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (new_exec,</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> &amp;temp_argc, &amp;temp_argv, error)) {</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> <span class='comment'>/* The error now comes from g_shell_parse_argv */</span></td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> vector_list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; term_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='macro'>g_strdup (term_argv[i])<span class='macro_popup'>g_strdup_inline (term_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; temp_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> <span class='macro'>g_strdup (temp_argv[i])<span class='macro_popup'>g_strdup_inline (temp_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> g_strfreev (temp_argv);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> real_argv = list_to_vector (vector_list);</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_slist_free_full (vector_list, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span class='keyword'>if</span> (sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> !sn_launcher_context_get_initiated (sn_context)) {</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> <span class='comment'>/* This means that we always use the first real_argv[0]</span></td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> <span class='comment'>* we select for the "binary name", but it's probably</span></td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='comment'>* OK to do that. Binary name isn't super-important</span></td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> <span class='comment'>* anyway, and we can't initiate twice, and we</span></td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> <span class='comment'>* must initiate prior to fork/exec.</span></td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> sn_launcher_context_set_binary_name (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> real_argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='keyword'>if</span> (item-&gt;launch_time &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> launch_time = gdk_x11_display_get_user_time (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> sn_launcher_context_initiate (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> g_get_prgname () ? g_get_prgname () : <span class='string_literal'>"unknown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> real_argv[0],</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> launch_time);</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='comment'>/* Don't allow accidental reuse of same timestamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> ((MateDesktopItem *)item)-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> envp = make_spawn_environment_for_sn_context (sn_context, envp);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span class='keyword'>if</span> ( ! g_spawn_async (working_dir,</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> real_argv,</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> envp,</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH <span class='comment'>/* flags */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func */</span></td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func_data */</span></td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> (do_not_reap_child ? &amp;pid : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='comment'>/* child_pid */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> error)) {</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='comment'>/* The error was set for us,</span></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='comment'>* we just can't launch this thingie */</span></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (do_not_reap_child) {</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> g_child_watch_add (pid, dummy_child_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> launched ++;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> <span class='keyword'>if</span> (arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> arg_ptr = arg_ptr-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> <span class='comment'>/* rinse, repeat until we run out of arguments (That</span></td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> <span class='comment'>* is if we were adding singles anyway) */</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> } <span class='keyword'>while</span> (added_status == ADDED_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> ! launch_only_one);</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_free (exec_locale);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> <span class='keyword'>if</span> ((sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)){</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> sn_launcher_context_complete (sn_context); <span class='comment'>/* end sequence */</span></td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> add_startup_timeout (screen ? screen :</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> gdk_display_get_default_screen (gdk_display_get_default ()),</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> sn_display_unref (sn_display);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION */</span></td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> free_args (args);</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>if</span> (term_argv)</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> g_strfreev (term_argv);</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"><span class='comment'>/* strip any trailing &amp;, return FALSE if bad things happen and</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='comment'>we end up with an empty string */</span></td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">strip_the_amp (<span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> size_t exec_len;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> <span class='macro'>g_strstrip (exec)<span class='macro_popup'>g_strchomp (g_strchug (exec))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> exec_len = strlen (exec);</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='comment'>/* kill any trailing '&amp;' */</span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='keyword'>if</span> (exec[exec_len-1] == '&amp;') {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> exec[exec_len-1] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> g_strchomp (exec);</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='comment'>/* can't exactly launch an empty thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>char</span> *the_exec;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> exec = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='comment'>/* This is a URL, so launch it as a url */</span></td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *url;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> url = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> <span class='comment'>/* Mate panel used to put this in Exec */</span></td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0'))</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> url = exec;</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0')) {</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_URL,</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No URL to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No URL to launch"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> retval = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> url,</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> <span class='macro'>GDK_CURRENT_TIME<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='keyword'>return</span> retval ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='comment'>/* check the type, if there is one set */</span></td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type != MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NOT_LAUNCHABLE,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Not a launchable item"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Not a launchable item"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> exec[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='comment'>/* make a new copy and get rid of spaces */</span></td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> the_exec = <span class='macro'>g_alloca (strlen (exec) + 1)<span class='macro_popup'>__builtin_alloca (strlen (exec) + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> g_strlcpy (the_exec, exec, strlen (exec) + 1);</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> ( ! strip_the_amp (the_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_BAD_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Bad command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Bad command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> ret = ditem_execute (item, the_exec, file_list, screen, workspace, envp,</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_ONLY_ONE),</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_USE_CURRENT_DIR),</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_URIS),</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_PATHS),</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_DO_NOT_REAP_CHILD),</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='comment'>* mate_desktop_item_launch:</span></td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='comment'>* This function runs the program listed in the specified 'item',</span></td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>* optionally appending additional arguments to its command line. It uses</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* #g_shell_parse_argv to parse the the exec string into a vector which is</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>* then passed to #g_spawn_async for execution. This can return all</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* the errors from MateURL, #g_shell_parse_argv and #g_spawn_async,</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* in addition to it's own. The files are</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* only added if the entry defines one of the standard % strings in it's</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>* Exec field.</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line">mate_desktop_item_launch (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> item, file_list, flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> <span class='comment'>* @envp: child's environment, or %NULL to inherit parent's</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line">mate_desktop_item_launch_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_on_screen:</span></td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span class='comment'>* @screen: the %GdkScreen on which the application should be launched</span></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span class='comment'>* @workspace: the workspace on which the app should be launched (-1 for current)</span></td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* additionally attempts to launch the application on a given screen</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>* and workspace.</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">mate_desktop_item_launch_on_screen (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> screen, workspace, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='comment'>* mate_desktop_item_drop_uri_list:</span></td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>* A list of files or urls dropped onto an icon, the proper (Url or File)</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> <span class='comment'>* exec is run you can pass directly string that you got as the</span></td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> <span class='comment'>* text/uri-list. This just parses the list and calls</span></td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line">mate_desktop_item_drop_uri_list (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_drop_uri_list_with_env (item, uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"><span class='comment'>* mate_desktop_item_drop_uri_list_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"><span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"><span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"><span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>* @envp: child's environment</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"><span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"><span class='comment'>* See mate_desktop_item_drop_uri_list for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"><span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"><span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"><span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"><span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line">mate_desktop_item_drop_uri_list_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='keyword'>char</span> **uris;</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> uris = g_uri_list_extract_uris (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='keyword'>for</span> (uri = uris[0]; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; uri++) {</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> list = g_list_prepend (list, uri);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> list = g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> ret = mate_desktop_item_launch_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> item, list, flags, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> g_strfreev (uris);</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> g_list_free (list);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line">exec_exists (<span class='keyword'>const</span> <span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='keyword'>if</span> (g_path_is_absolute (exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='keyword'>if</span> (access (exec, <span class='macro'>X_OK<span class='macro_popup'>1</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>char</span> *tryme;</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> tryme = g_find_program_in_path (exec);</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> <span class='keyword'>if</span> (tryme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> g_free (tryme);</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> <span class='comment'>* mate_desktop_item_exists:</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* Attempt to figure out if the program that can be executed by this item</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>* actually exists. First it tries the TryExec attribute to see if that</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* contains a program that is in the path. Then if there is no such</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>* attribute, it tries the first word of the Exec attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> <span class='comment'>* Returns: A boolean, %TRUE if it exists, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">mate_desktop_item_exists (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *try_exec;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> try_exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TRY_EXEC<span class='macro_popup'>"TryExec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> <span class='keyword'>if</span> (try_exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> ! exec_exists (try_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exe;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (exec, &amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='keyword'>if</span> (argc &lt; 1) {</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> exe = argv[0];</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> <span class='keyword'>if</span> ( ! exec_exists (exe)) {</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> <span class='comment'>* mate_desktop_item_get_entry_type:</span></td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='comment'>* Gets the type attribute (the 'Type' field) of the item. This should</span></td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> <span class='comment'>* usually be 'Application' for an application, but it can be 'Directory'</span></td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='comment'>* for a directory description. There are other types available as well.</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> <span class='comment'>* The type usually indicates how the desktop item should be handeled and</span></td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='comment'>* how the 'Exec' field should be handeled.</span></td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='comment'>* Returns: The type of the specified 'item'. The returned</span></td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='comment'>* memory remains owned by the MateDesktopItem and should not be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line">MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line">mate_desktop_item_get_entry_type (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, 0)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>return</span> item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line">mate_desktop_item_set_entry_type (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> MateDesktopItemType type)</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> item-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_NULL:</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION:</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Application"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_LINK:</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE:</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"FSDevice"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"MimeType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY:</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE:</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Service"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"ServiceType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> <span class='comment'>* mate_desktop_item_get_file_status:</span></td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='comment'>* This function checks the modification time of the on-disk file to</span></td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> <span class='comment'>* see if it is more recent than the in-memory data.</span></td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> <span class='comment'>* Returns: An enum value that specifies whether the item has changed since being loaded.</span></td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line">MateDesktopItemStatus</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line">mate_desktop_item_get_file_status (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> MateDesktopItemStatus retval;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> retval = MATE_DESKTOP_ITEM_UNCHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_has_attribute (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> retval = MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (((guint64) item-&gt;mtime) &lt; g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> retval = MATE_DESKTOP_ITEM_CHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='comment'>* mate_desktop_item_find_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> <span class='comment'>* @icon: icon name, something you'd get out of the Icon key</span></td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>* @desired_size: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='comment'>* is not an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line">mate_desktop_item_find_icon (GtkIconTheme *icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon,</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='keyword'>int</span> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='keyword'>int</span> flags)</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> GtkIconInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='keyword'>char</span> *full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='macro'>g_return_val_if_fail (icon_theme == NULL ||<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='macro'>GTK_IS_ICON_THEME (icon_theme), NULL)<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || strcmp(icon,<span class='string_literal'>""</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_path_is_absolute (icon)) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> <span class='keyword'>if</span> (g_file_test (icon, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> <span class='keyword'>char</span> *icon_no_extension;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='keyword'>if</span> (icon_theme == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> icon_theme = gtk_icon_theme_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> icon_no_extension = <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> p = strrchr (icon_no_extension, '.');</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='keyword'>if</span> (p &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> (strcmp (p, <span class='string_literal'>".png"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> strcmp (p, <span class='string_literal'>".xpm"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> strcmp (p, <span class='string_literal'>".svg"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> *p = 0;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> info = gtk_icon_theme_lookup_icon (icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> icon_no_extension,</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> full = <span class='macro'>g_strdup (gtk_icon_info_get_filename (info))<span class='macro_popup'>g_strdup_inline (gtk_icon_info_get_filename (info))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> g_free (icon_no_extension);</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='keyword'>return</span> full;</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> <span class='comment'>* mate_desktop_item_get_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* is not set as an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line">mate_desktop_item_get_icon (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> GtkIconTheme *icon_theme)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='comment'>/* maybe this function should be deprecated in favour of find icon</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> <span class='comment'>* -George */</span></td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> icon = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_find_icon (icon_theme, icon,</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> 48 <span class='comment'>/* desired_size */</span>,</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> 0 <span class='comment'>/* flags */</span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* mate_desktop_item_get_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Returns: The file location associated with 'item'.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">mate_desktop_item_get_location (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>return</span> item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='comment'>* @location: A uri string specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item.</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line">mate_desktop_item_set_location (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *location)</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> strcmp (item-&gt;location, location) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> item-&gt;location = <span class='macro'>g_strdup (location)<span class='macro_popup'>g_strdup_inline (location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='comment'>/* This is ugly, but useful internally */</span></td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>if</span> (item-&gt;mtime != <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location) {</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>if</span> (g_file_info_has_attribute (info,</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> item-&gt;mtime = g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='comment'>/* Make sure that save actually saves */</span></td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location_file:</span></td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='comment'>* @file: A local filename specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item to the given @file.</span></td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line">mate_desktop_item_set_location_file (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *file)</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> mate_desktop_item_set_location_gfile (item, gfile);</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">mate_desktop_item_set_location_gfile (MateDesktopItem *item, GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mate_desktop_item_set_location (item, uri);</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> <span class='comment'>* Reading/Writing different sections, NULL is the standard section</span></td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line">mate_desktop_item_attr_exists (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> <span class='comment'>* String type</span></td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line">mate_desktop_item_get_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line">mate_desktop_item_set_string (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> set (item, attr, value);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> item-&gt;type = type_from_string (value);</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='comment'>* LocaleString type</span></td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>return</span> lookup_best_locale(item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring_lang(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr, <span class='keyword'>const</span> <span class='keyword'>char</span>* language)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>return</span> lookup_locale(item, attr, language);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='comment'>* mate_desktop_item_get_string_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> <span class='comment'>* @attr: An attribute name</span></td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='comment'>* Returns the current locale that is used for the given attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> <span class='comment'>* This might not be the same for all attributes. For example, if your</span></td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='comment'>* locale is "en_US.ISO8859-1" but attribute FOO only has "en_US" then</span></td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> <span class='comment'>* that would be returned for attr = "FOO". If attribute BAR has</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* "en_US.ISO8859-1" then that would be returned for "BAR".</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* Returns: a string equal to the current locale or NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>* if the attribute is invalid or there is no matching locale.</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">mate_desktop_item_get_attr_locale (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> value = lookup_locale (item, attr, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">mate_desktop_item_get_languages (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>char</span> *language = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>if</span> (attr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> lookup_locale (item, attr, language) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> list = g_list_prepend (list, language);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line">get_language (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>/* find first without encoding */</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='keyword'>if</span> (strchr (langs_pointer[i], '.') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_desktop_item_set_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> set_locale (item, attr, get_language (), value);</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line">mate_desktop_item_set_localestring_lang (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> set_locale (item, attr, language, value);</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_desktop_item_clear_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> <span class='keyword'>for</span> (l = item-&gt;languages; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> set_locale (item, attr, l-&gt;data, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> set (item, attr, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='comment'>* Strings, Regexps types</span></td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">mate_desktop_item_get_strings (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> <span class='keyword'>return</span> g_strsplit (value, <span class='string_literal'>";"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">mate_desktop_item_set_strings (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> <span class='keyword'>char</span> **strings)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='keyword'>char</span> *str, *str2;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> str = g_strjoinv (<span class='string_literal'>";"</span>, strings);</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> str2 = g_strconcat (str, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> set (item, attr, str2);</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> g_free (str2);</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='comment'>* Boolean type</span></td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line">mate_desktop_item_get_boolean (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> <span class='keyword'>return</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> atoi (value) != 0);</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line">mate_desktop_item_set_boolean (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean value)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> set (item, attr, value ? <span class='string_literal'>"true"</span> : <span class='string_literal'>"false"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line">mate_desktop_item_set_launch_time (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> guint32 timestamp)</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> item-&gt;launch_time = timestamp;</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> <span class='comment'>* Clearing attributes</span></td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line">mate_desktop_item_clear_section (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> sec = find_section (item, section);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> <span class='keyword'>if</span> (sec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> g_free (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> g_list_free (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (li = sec-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> sec-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_list_free (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"><span class='comment'>/************************************************************</span></td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='comment'>* Parser: *</span></td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='comment'>************************************************************/</span></td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">standard_is_boolean (<span class='keyword'>const</span> <span class='keyword'>char</span> * key)</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> <span class='keyword'>static</span> GHashTable *bools = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='keyword'>if</span> (bools == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> bools = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (bools, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line">standard_is_strings (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>static</span> GHashTable *strings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>if</span> (strings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> strings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (strings, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='comment'>/* If no need to cannonize, returns NULL */</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line">cannonize (<span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='keyword'>if</span> (standard_is_boolean (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> <span class='keyword'>if</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> atoi (value) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"true"</span>)<span class='macro_popup'>g_strdup_inline ("true")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"false"</span>)<span class='macro_popup'>g_strdup_inline ("false")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (standard_is_strings (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> <span class='keyword'>int</span> len = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>if</span> (len == 0 || value[len-1] != ';') {</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> <span class='keyword'>return</span> g_strconcat (value, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='comment'>/* XXX: Perhaps we should canonize numeric values as well, but this</span></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span class='comment'>* has caused some subtle problems before so it needs to be done</span></td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='comment'>* carefully if at all */</span></td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">decode_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='keyword'>char</span> *p = g_malloc (strlen (s) + 1);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> <span class='keyword'>char</span> *q = p;</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='keyword'>if</span> (*s == '\\'){</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> <span class='keyword'>switch</span> (*(++s)){</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='keyword'>case</span> 's':</td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> *p++ = ' ';</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> <span class='keyword'>case</span> 't':</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> *p++ = '\t';</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> *p++ = '\n';</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> <span class='keyword'>case</span> 'r':</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> *p++ = '\r';</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span id="start32"><span class='keyword'>static</span></span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">escape_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> <span class='keyword'>char</span> *<span id="start31"><span id="end32">return_value</span></span>, *p;</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *q;</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>int</span> len = 0;</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span id="start30"><span id="end31"><span class='keyword'>if</span></span></span> (<span id="start29"><span id="end30"><span class='variable'>s<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>11.1</div></td><td>'s' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup(<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> <span id="start26"><span id="end27"><span id="start28"><span id="end29">q</span></span></span></span> = <span id="start27"><span id="end28">s</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span id="start13"><span id="end14"><span id="start19"><span id="end20"><span id="start25"><span id="end26"><span class='keyword'>while</span></span></span></span></span></span></span> (*q){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 3116</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> <span id="start18"><span id="end19"><span id="start24"><span id="end25">len</span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span id="start17"><span id="end18"><span id="start23"><span id="end24"><span class='keyword'>if</span></span></span></span></span> (<span id="start16"><span class="mrange"><span id="end17"><span id="start22"><span class="mrange"><span id="end23">strchr</span></span></span></span> (<span class='string_literal'>"\n\r\t\\"</span>, *q) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span id="start15"><span id="end16"><span id="start21"><span id="end22">q</span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> <span id="start14"><span id="end15"><span id="start20"><span id="end21">}</td></tr></span></span></span></span>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span id="start10"><span id="end11"><span id="start12"><span id="end13">return_value</span></span></span></span> = p = (<span class='keyword'>char</span> *) g_malloc (<span id="start11"><span id="end12">len</span></span> + 1);</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span id="start4"><span class='keyword'>do</span></span> {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Loop condition is true. Execution continues on line 3118</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> <span id="start3"><span id="end4"><span id="start9"><span id="end10"><span class='keyword'>switch</span></span></span></span></span> (<span id="start2"><span id="end3"><span id="start8"><span id="end9">*</span></span></span></span>s){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Control jumps to 'case 92:' at line 3131</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Control jumps to 'case 13:' at line 3127</td><td><div class="PathNav"><a href="#EndPath" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='keyword'>case</span> '\t':</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> *p++ = 't';</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> <span class='keyword'>case</span> '\n':</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> *p++ = 'n';</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>case</span> '\r':</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> <span id="start1"><span id="end2">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> <span class="mrange"><span id="start0"><span id="end1">*</span></span>p++ <span id="end0">=</span> 'r';</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:30ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> <span id="start7"><span id="end8">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> <span id="start6"><span id="end7">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span id="start5"><span id="end6"><span class='keyword'>break</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td> Execution continues on line 3138</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> } <span class='keyword'>while</span> (<span id="end5">*</span>s++);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> <span class='keyword'>return</span> return_value;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line">check_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> GIConv cd = g_iconv_open (<span class='string_literal'>"UTF-8"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> ((GIConv)-1 == cd)</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> g_iconv_close (cd);</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line">insert_locales (GHashTable *encodings, <span class='keyword'>char</span> *enc, ...)</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='macro'>va_start (args, enc)<span class='macro_popup'>__builtin_va_start(args, enc)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>for</span> (;;) {</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> g_hash_table_insert (encodings, s, enc);</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"><span class='comment'>/* make a standard conversion table from the desktop standard spec */</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">init_encodings (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GHashTable *encodings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> <span class='comment'>/* "C" is plain ascii */</span></td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ASCII"</span>, <span class='string_literal'>"C"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ARMSCII-8"</span>, <span class='string_literal'>"by"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"BIG5"</span>, <span class='string_literal'>"zh_TW"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"CP1251"</span>, <span class='string_literal'>"be"</span>, <span class='string_literal'>"bg"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"EUC-CN"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-CN"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GB2312"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-JP"</span>, <span class='string_literal'>"ja"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-KR"</span>, <span class='string_literal'>"ko"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GEORGIAN-PS"</span>, <span class='string_literal'>"ka"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-1"</span>, <span class='string_literal'>"br"</span>, <span class='string_literal'>"ca"</span>, <span class='string_literal'>"da"</span>, <span class='string_literal'>"de"</span>, <span class='string_literal'>"en"</span>, <span class='string_literal'>"es"</span>, <span class='string_literal'>"eu"</span>, <span class='string_literal'>"fi"</span>, <span class='string_literal'>"fr"</span>, <span class='string_literal'>"gl"</span>, <span class='string_literal'>"it"</span>, <span class='string_literal'>"nl"</span>, <span class='string_literal'>"wa"</span>, <span class='string_literal'>"no"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"sv"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-2"</span>, <span class='string_literal'>"cs"</span>, <span class='string_literal'>"hr"</span>, <span class='string_literal'>"hu"</span>, <span class='string_literal'>"pl"</span>, <span class='string_literal'>"ro"</span>, <span class='string_literal'>"sk"</span>, <span class='string_literal'>"sl"</span>, <span class='string_literal'>"sq"</span>, <span class='string_literal'>"sr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-3"</span>, <span class='string_literal'>"eo"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-5"</span>, <span class='string_literal'>"mk"</span>, <span class='string_literal'>"sp"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-7"</span>, <span class='string_literal'>"el"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-9"</span>, <span class='string_literal'>"tr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-13"</span>, <span class='string_literal'>"lt"</span>, <span class='string_literal'>"lv"</span>, <span class='string_literal'>"mi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-14"</span>, <span class='string_literal'>"ga"</span>, <span class='string_literal'>"cy"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-15"</span>, <span class='string_literal'>"et"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-R"</span>, <span class='string_literal'>"ru"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-U"</span>, <span class='string_literal'>"uk"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"TCVN-5712"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN-5712"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TIS-620"</span>, <span class='string_literal'>"th"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "VISCII", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>return</span> encodings;</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line">get_encoding_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span class='keyword'>char</span> lang[3];</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *encoding;</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span class='keyword'>static</span> GHashTable *encodings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='comment'>/* if locale includes encoding, use it */</span></td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> encoding = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> encoding+1;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='keyword'>if</span> (encodings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> encodings = init_encodings ();</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='comment'>/* first try the entire locale (at this point ll_CC) */</span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> encoding = g_hash_table_lookup (encodings, locale);</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>return</span> encoding;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='comment'>/* Try just the language */</span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> strncpy (lang, locale, 2);</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> lang[2] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (encodings, lang);</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"><span class='keyword'>static</span> Encoding</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">get_encoding (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='keyword'>char</span> buf [<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> gboolean all_valid_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='keyword'>if</span> (strncmp (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> buf,</td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='keyword'>char</span> *p = &amp;buf[strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)];</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='keyword'>if</span> (*p != '=')</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"UTF-8"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"Legacy-Mixed"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='comment'>/* According to the spec we're not supposed</span></td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='comment'>* to read a file like this */</span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='keyword'>return</span> ENCODING_UNKNOWN;</td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (<span class='string_literal'>"[KDE Desktop Entry]"</span>, buf) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='comment'>/* don't break yet, we still want to support</span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='comment'>* Encoding even here */</span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8 &amp;&amp; ! g_utf8_validate (buf, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> all_valid_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='keyword'>if</span> (old_kde)</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> <span class='comment'>/* try to guess by location */</span></td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strstr (rb-&gt;uri, <span class='string_literal'>"mate/apps/"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> <span class='comment'>/* old mate */</span></td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> <span class='comment'>/* A dilemma, new KDE files are in UTF-8 but have no Encoding</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> <span class='comment'>* info, at this time we really can't tell. The best thing to</span></td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='comment'>* do right now is to just assume UTF-8 if the whole file</span></td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> <span class='comment'>* validates as utf8 I suppose */</span></td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8)</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line">decode_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *value, Encoding encoding, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* if legacy mixed, then convert */</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_LEGACY_MIXED) {</td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *char_encoding = get_encoding_from_locale (locale);</td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>char</span> *utf8_string;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='keyword'>if</span> (char_encoding == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='keyword'>if</span> (strcmp (char_encoding, <span class='string_literal'>"ASCII"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> utf8_string = g_convert (value, -1, <span class='string_literal'>"UTF-8"</span>, char_encoding,</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='keyword'>if</span> (utf8_string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> retval = decode_string_and_dup (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> g_free (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='comment'>/* if utf8, then validate */</span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_UTF8) {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='keyword'>if</span> ( ! g_utf8_validate (value, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='comment'>/* invalid utf8, ignore this key */</span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='comment'>/* Meaning this is not a localized string */</span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">snarf_locale_from_key (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *brace;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='keyword'>char</span> *locale, *p;</td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> brace = strchr (key, '[');</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='keyword'>if</span> (brace == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> locale = <span class='macro'>g_strdup (brace + 1)<span class='macro_popup'>g_strdup_inline (brace + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (*locale == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> p = strchr (locale, ']');</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> <span class='keyword'>return</span> locale;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line">insert_key (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> Section *cur_section,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> Encoding encoding,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value,</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> gboolean old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> gboolean no_translations)</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> <span class='keyword'>char</span> *k;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> <span class='keyword'>char</span> *val;</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"> <span class='comment'>/* we always store everything in UTF-8 */</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> val = <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> <span class='keyword'>char</span> *locale = snarf_locale_from_key (key);</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> <span class='comment'>/* If we're ignoring translations */</span></td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> <span class='keyword'>if</span> (no_translations &amp;&amp; locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> val = decode_string (value, encoding, locale);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* Ignore this key, it's whacked */</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='keyword'>if</span> (val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> g_strchomp (val);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='comment'>/* For old KDE entries, we can also split by a comma</span></td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='comment'>* on sort order, so convert to semicolons */</span></td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> <span class='keyword'>if</span> (old_kde &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> strchr (val, ';') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> <span class='keyword'>for</span> (i = 0; val[i] != '\0'; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> <span class='keyword'>if</span> (val[i] == ',')</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> val[i] = ';';</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> <span class='comment'>/* Check some types, not perfect, but catches a lot</span></td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> <span class='comment'>* of things */</span></td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> <span class='keyword'>char</span> *cannon = cannonize (key, val);</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> <span class='keyword'>if</span> (cannon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> val = cannon;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> <span class='comment'>/* Take care of the language part */</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> <span class='comment'>/* Whack C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> p = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> <span class='keyword'>char</span> *p, *brace;</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> <span class='comment'>/* Whack the encoding part */</span></td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> p = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> item-&gt;languages = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> (item-&gt;languages, locale);</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> <span class='comment'>/* Whack encoding from encoding in the key */</span></td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> brace = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> p = strchr (brace, '.');</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> *p = ']';</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line"> *(p+1) = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, k) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> item-&gt;keys = g_list_prepend (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> <span class='macro'>g_strdup (k)<span class='macro_popup'>g_strdup_inline (k)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> g_hash_table_replace (item-&gt;main_hash, k, val);</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> cur_section-&gt;name, k);</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, full) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> cur_section-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> g_list_prepend (cur_section-&gt;keys, k);</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> full, val);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line">setup_type (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type = g_hash_table_lookup (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> <span class='keyword'>char</span> *base = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> <span class='keyword'>if</span> (base != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> strcmp (base, <span class='string_literal'>".directory"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> <span class='comment'>/* This gotta be a directory */</span></td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"Directory"</span>)<span class='macro_popup'>g_strdup_inline ("Directory")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> item-&gt;type = type_from_string (type);</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"><span class='comment'>/* fallback to find something suitable for C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line">try_english_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>char</span> *locales[] = { <span class='string_literal'>"en_US"</span>, <span class='string_literal'>"en_GB"</span>, <span class='string_literal'>"en_AU"</span>, <span class='string_literal'>"en"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> <span class='keyword'>for</span> (i = 0; locales[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> str = <span class='macro'>g_strdup (lookup_locale (item, key, locales[i]))<span class='macro_popup'>g_strdup_inline (lookup_locale (item, key, locales[i]))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> <span class='comment'>/* We need a 7-bit ascii string, so whack all</span></td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='comment'>* above 127 chars */</span></td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> guchar *p;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='keyword'>for</span> (p = (guchar *)str; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>if</span> (*p &gt; 127)</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> *p = '?';</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> <span class='keyword'>return</span> str;</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line">sanitize (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type;</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> type = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> <span class='comment'>/* understand old mate style url exec thingies */</span></td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (type, <span class='string_literal'>"URL"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='keyword'>if</span> (exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> <span class='comment'>/* Note, this must be in this order */</span></td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>, exec);</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='comment'>/* we make sure we have Name, Encoding and Version */</span></td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>char</span> *name = try_english_key (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> <span class='comment'>/* If no name, use the basename */</span></td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> name = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> <span class='comment'>/* If no uri either, use same default as mate_desktop_item_new */</span></td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned here is the name of</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> <span class='comment'>* an application or a document */</span></td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"No name"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("mate-desktop", "No name"<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> <span class='comment'>/* We store everything in UTF-8 so write that down */</span></td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line"> <span class='comment'>/* this is the version that we follow, so write it down */</span></td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"1.0"</span>)<span class='macro_popup'>g_strdup_inline ("1.0")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> FirstBrace,</td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> OnSecHeader,</td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> IgnoreToEOL,</td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> IgnoreToEOLFirst,</td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> KeyDef,</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> KeyDefOnKey,</td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> KeyValue</td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line">ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> <span class='keyword'>int</span> state;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> <span class='keyword'>char</span> CharBuffer [1024];</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> <span class='keyword'>char</span> *next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> Encoding encoding;</td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> Section *cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> <span class='keyword'>char</span> *key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> encoding = get_encoding (rb);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> <span class='keyword'>if</span> (encoding == ENCODING_UNKNOWN) {</td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_UNKNOWN_ENCODING,</td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Unknown encoding of: %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Unknown encoding of: %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"> <span class='comment'>/* Rewind since get_encoding goes through the file */</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line"> <span class='keyword'>if</span> (! readbuf_rewind (rb, error)) {</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> <span class='comment'>/* Note: location and mtime are filled in by the new_from_file</span></td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='comment'>* function since it has those values */</span></td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"><span class='directive'>#define OVERFLOW (next == &amp;CharBuffer [sizeof(CharBuffer)-1])</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> <span class='keyword'>while</span> ((c = readbuf_getc (rb)) != <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> <span class='keyword'>if</span> (c == '\r') <span class='comment'>/* Ignore Carriage Return */</span></td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> <span class='keyword'>switch</span> (state) {</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> <span class='keyword'>case</span> OnSecHeader:</td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> <span class='keyword'>if</span> (c == ']' || OVERFLOW) {</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> cur_section-&gt;keys = g_list_reverse</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='string_literal'>"KDE Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line"> <span class='string_literal'>"Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> cur_section = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> cur_section-&gt;name =</td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> cur_section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> item-&gt;sections = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> (item-&gt;sections, cur_section);</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (c == '[') {</td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='comment'>/* FIXME: probably error out instead of ignoring this */</span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOL:</td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOLFirst:</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> <span class='keyword'>if</span> (c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> <span class='keyword'>if</span> (state == IgnoreToEOLFirst)</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line"> <span class='keyword'>case</span> FirstBrace:</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> <span class='keyword'>case</span> KeyDef:</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line"> <span class='keyword'>case</span> KeyDefOnKey:</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> <span class='keyword'>if</span> (c == '#') {</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> state = IgnoreToEOLFirst;</td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> <span class='keyword'>if</span> (c == '[' &amp;&amp; state != KeyDefOnKey){</td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> state = OnSecHeader;</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* On first pass, don't allow dangling keys */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> <span class='keyword'>if</span> ((c == ' ' &amp;&amp; state != KeyDefOnKey) || c == '\t')</td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> <span class='keyword'>if</span> (c == '\n' || OVERFLOW) { <span class='comment'>/* Abort Definition */</span></td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> <span class='keyword'>if</span> (c == '=' || OVERFLOW){</td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> key = <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> state = KeyValue;</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"> state = KeyDefOnKey;</td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line"> <span class='keyword'>case</span> KeyValue:</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='keyword'>if</span> (OVERFLOW || c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> state = (c == '\n') ? KeyDef : IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"> } <span class='comment'>/* switch */</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line"> } <span class='comment'>/* while ((c = getc_unlocked (f)) != EOF) */</span></td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; state == KeyValue) {</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"><span class='directive'>#undef OVERFLOW</span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> cur_section-&gt;keys = g_list_reverse (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"> item-&gt;keys = g_list_reverse (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line"> <span class='comment'>/* sections were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line"> item-&gt;sections = g_list_reverse (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> <span class='comment'>/* sanitize some things */</span></td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> sanitize (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> <span class='comment'>/* make sure that we set up the type */</span></td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> setup_type (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> stream_printf (GFileOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line">stream_printf (GFileOutputStream *stream, <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...)</td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> gchar *s;</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> <span class='macro'>va_start (args, format)<span class='macro_popup'>__builtin_va_start(args, format)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> s = g_strdup_vprintf (format, args);</td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> <span class='comment'>/* FIXME: what about errors */</span></td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> g_output_stream_write (<span class='macro'>G_OUTPUT_STREAM (stream)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((stream)), ((g_output_stream_get_type ()))))))</span></span>, s, strlen (s),</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> g_free (s);</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line">dump_section (MateDesktopItem *item, GFileOutputStream *stream, Section *section)</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[%s]\n"</span>, section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> <span class='keyword'>for</span> (li = section-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>, section-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"><span id="start48"><span class='keyword'>static</span></span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line">ditem_save (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> <span id="start47"><span id="end48">GList</span></span> *li;</td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line"> stream = g_file_replace (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, G_FILE_CREATE_NONE,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> <span id="start46"><span id="end47"><span class='keyword'>if</span></span></span> (<span id="start45"><span class="mrange"><span id="end46">stream</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'stream' is not equal to NULL</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line"> <span id="start42"><span id="end43"><span id="start44"><span id="end45">stream_printf</span></span></span></span> (<span id="start43"><span id="end44">stream</span></span>, <span class='string_literal'>"[Desktop Entry]\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> <span id="start41"><span id="end42"><span class='keyword'>for</span></span></span> (li = item-&gt;keys; <span id="start40"><span class="mrange"><span id="end41">li</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>; li = li-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:31ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Assuming 'li' is not equal to NULL</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"> <span id="start37"><span id="end38"><span id="start39"><span id="end40"><span class='keyword'>const</span></span></span></span></span> <span class='keyword'>char</span> *key = <span id="start38"><span id="end39">li</span></span>-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> <span id="start36"><span id="end37"><span class='keyword'>if</span></span></span> (<span id="start35"><span class="mrange"><span id="end36">value</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming 'value' is not equal to NULL</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line"> <span id="start34"><span id="end35"><span class='keyword'>char</span></span></span> *val = <span class="mrange"><span id="end33">escape_string_and_dup</span> (<span id="start33"><span id="end34">value</span></span>)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Calling 'escape_string_and_dup'</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='keyword'>if</span> (item-&gt;sections != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> Section *section = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line"> <span class='comment'>/* Don't write empty sections */</span></td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> <span class='keyword'>if</span> (section-&gt;keys == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> dump_section (item, stream, section);</td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> <span class='keyword'>if</span> (li-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line"><span class='keyword'>static</span> gpointer</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line">_mate_desktop_item_copy (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_copy (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line">_mate_desktop_item_free (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> mate_desktop_item_unref (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">GType</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line">mate_desktop_item_get_type (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line"> <span class='keyword'>static</span> GType type = 0;</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line"> <span class='keyword'>if</span> (type == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> type = g_boxed_type_register_static (<span class='string_literal'>"MateDesktopItem"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> _mate_desktop_item_copy,</td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> _mate_desktop_item_free);</td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line">GQuark</td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line">mate_desktop_item_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='keyword'>static</span> GQuark q = 0;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='keyword'>if</span> (q == 0)</td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> q = g_quark_from_static_string (<span class='string_literal'>"mate-desktop-item-error-quark"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-4a69b4.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-4a69b4.html
new file mode 100644
index 0000000..58458cb
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-4a69b4.html
@@ -0,0 +1,2115 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-hsv.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-hsv.c -->
+
+<!-- FILENAME mate-hsv.c -->
+
+<!-- FUNCTIONNAME mate_hsv_button_press -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 4a69b4a2e0822c9be27a1468c46ab544 -->
+
+<!-- BUGLINE 652 -->
+
+<!-- BUGCOLUMN 20 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-hsv.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 652, column 20</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-hsv.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-hsv.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"652": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* HSV color selector for GTK+</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright (C) 1999 The Free Software Foundation</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* Copyright (C) 2019-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Authors: Simon Budig &lt;[email protected]&gt; (original code)</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* Federico Mena-Quintero &lt;[email protected]&gt; (cleanup for GTK+)</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* Jonathan Blandford &lt;[email protected]&gt; (cleanup for GTK+)</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* This library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* modify it under the terms of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* License as published by the Free Software Foundation; either</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* version 2 of the License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* This library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* Lesser General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* License along with this library. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* file for a list of people on the GTK+ Team. See the ChangeLog</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* files for a list of changes. These files are distributed with</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>* GTK+ at ftp://ftp.gtk.org/pub/gtk/.</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> <span class='comment'>* Modified to work internally in mate-desktop by Pablo Barciela 2019</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include "mate-hsv.h"</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;math.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>I_(string)<span class='macro_popup'>g_intern_static_string (string)</span></span> g_intern_static_string (string)</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='comment'>* SECTION:mate-hsv</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='comment'>* @Short_description: A “color wheel” widget</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='comment'>* @Title: MateHSV</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='comment'>* #MateHSV is the “color wheel” part of a complete color selector widget.</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='comment'>* It allows to select a color by determining its HSV components in an</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> <span class='comment'>* intuitive way. Moving the selection around the outer ring changes the hue,</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> <span class='comment'>* and moving the selection point inside the inner triangle changes value and</span></td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='comment'>* saturation.</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='comment'>/* Default width/height */</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_SIZE<span class='macro_popup'>100</span></span> 100</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='comment'>/* Default ring width */</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_RING_WIDTH<span class='macro_popup'>10</span></span> 10</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"><span class='comment'>/* Dragging modes */</span></td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> DRAG_NONE,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> DRAG_H,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> DRAG_SV</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">} DragMode;</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='comment'>/* Private part of the MateHSV structure */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='keyword'>struct</span> _MateHSVPrivate</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Color value */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>double</span> h;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>double</span> s;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>double</span> v;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* Size and ring width */</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='keyword'>int</span> size;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> <span class='keyword'>int</span> ring_width;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='comment'>/* Window for capturing events */</span></td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> GdkWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='comment'>/* Dragging mode */</span></td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> DragMode mode;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> guint focus_on_ring : 1;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='comment'>/* Signal IDs */</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> CHANGED,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> MOVE,</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> LAST_SIGNAL</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_destroy (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_realize (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_unrealize (GtkWidget *widget);</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_get_preferred_width (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> gint *natural);</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_get_preferred_height (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> gint *natural);</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_size_allocate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> GtkAllocation *allocation);</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_button_press (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GdkEventButton *event);</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_button_release (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> GdkEventButton *event);</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_motion (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> GdkEventMotion *event);</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_draw (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> cairo_t *cr);</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_grab_broken (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> GdkEventGrabBroken *event);</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"><span class='keyword'>static</span> gboolean mate_hsv_focus (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> GtkDirectionType direction);</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_hsv_move (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> GtkDirectionType dir);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> guint hsv_signals[LAST_SIGNAL];</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='macro'>G_DEFINE_TYPE_WITH_PRIVATE (MateHSV, mate_hsv, GTK_TYPE_WIDGET)<span class='macro_popup'>static void mate_hsv_init (MateHSV *self); static void mate_hsv_class_init<br> (MateHSVClass *klass); static GType mate_hsv_get_type_once (<br>void); static gpointer mate_hsv_parent_class = ((void*)0); static<br> gint MateHSV_private_offset; static void mate_hsv_class_intern_init<br> (gpointer klass) { mate_hsv_parent_class = g_type_class_peek_parent<br> (klass); if (MateHSV_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;MateHSV_private_offset); mate_hsv_class_init ((<br>MateHSVClass*) klass); } __attribute__ ((__unused__)) static inline<br> gpointer mate_hsv_get_instance_private (MateHSV *self) { return<br> (((gpointer) ((guint8*) (self) + (glong) (MateHSV_private_offset<br>)))); } GType mate_hsv_get_type (void) { static gsize static_g_define_type_id<br> = 0; if ((__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); (void<br>) (0 ? (gpointer) *(&amp;static_g_define_type_id) : ((void*)0<br>)); (!(__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = mate_hsv_get_type_once ()<br>; (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType mate_hsv_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((gtk_widget_get_type ()), g_intern_static_string ("MateHSV"<br>), sizeof (MateHSVClass), (GClassInitFunc)(void (*)(void)) mate_hsv_class_intern_init<br>, sizeof (MateHSV), (GInstanceInitFunc)(void (*)(void)) mate_hsv_init<br>, (GTypeFlags) 0); { {{ MateHSV_private_offset = g_type_add_instance_private<br> (g_define_type_id, sizeof (MateHSVPrivate)); };} } return g_define_type_id<br>; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='comment'>/* Class initialization function for the HSV color selector */</span></td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line">mate_hsv_class_init (MateHSVClass *class)</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> GObjectClass *gobject_class;</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GtkWidgetClass *widget_class;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> MateHSVClass *hsv_class;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> GtkBindingSet *binding_set;</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> gobject_class = (GObjectClass *) class;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> widget_class = (GtkWidgetClass *) class;</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> hsv_class = <span class='macro'>MATE_HSV_CLASS (class)<span class='macro_popup'>((((MateHSVClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((class)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> widget_class-&gt;destroy = mate_hsv_destroy;</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> widget_class-&gt;realize = mate_hsv_realize;</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> widget_class-&gt;unrealize = mate_hsv_unrealize;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> widget_class-&gt;get_preferred_width = mate_hsv_get_preferred_width;</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> widget_class-&gt;get_preferred_height = mate_hsv_get_preferred_height;</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> widget_class-&gt;size_allocate = mate_hsv_size_allocate;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> widget_class-&gt;button_press_event = mate_hsv_button_press;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> widget_class-&gt;button_release_event = mate_hsv_button_release;</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> widget_class-&gt;motion_notify_event = mate_hsv_motion;</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> widget_class-&gt;draw = mate_hsv_draw;</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> widget_class-&gt;focus = mate_hsv_focus;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> widget_class-&gt;grab_broken_event = mate_hsv_grab_broken;</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_COLOR_CHOOSER);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> hsv_class-&gt;move = mate_hsv_move;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> hsv_signals[CHANGED] =</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> g_signal_new (<span class='macro'>I_(<span class='string_literal'>"changed"</span>)<span class='macro_popup'>g_intern_static_string ("changed")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (gobject_class)<span class='macro_popup'>((((GTypeClass*) (gobject_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (MateHSVClass, changed)<span class='macro_popup'>((glong) __builtin_offsetof(MateHSVClass, changed))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> hsv_signals[MOVE] =</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> g_signal_new (<span class='macro'>I_(<span class='string_literal'>"move"</span>)<span class='macro_popup'>g_intern_static_string ("move")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (gobject_class)<span class='macro_popup'>((((GTypeClass*) (gobject_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (MateHSVClass, move)<span class='macro_popup'>((glong) __builtin_offsetof(MateHSVClass, move))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='macro'>GTK_TYPE_DIRECTION_TYPE<span class='macro_popup'>(gtk_direction_type_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> binding_set = gtk_binding_set_by_class (class);</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Up<span class='macro_popup'>0xff52</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_UP);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Up<span class='macro_popup'>0xff97</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_UP);</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Down<span class='macro_popup'>0xff54</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_DOWN);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Down<span class='macro_popup'>0xff99</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_DOWN);</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Right<span class='macro_popup'>0xff53</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_RIGHT);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Right<span class='macro_popup'>0xff98</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_RIGHT);</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_Left<span class='macro_popup'>0xff51</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_LEFT);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> gtk_binding_entry_add_signal (binding_set, <span class='macro'>GDK_KEY_KP_Left<span class='macro_popup'>0xff96</span></span>, 0,</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> <span class='string_literal'>"move"</span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>, GTK_DIR_LEFT);</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line">mate_hsv_init (MateHSV *hsv)</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> priv = mate_hsv_get_instance_private (hsv);</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> hsv-&gt;priv = priv;</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> gtk_widget_set_has_window (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> gtk_widget_set_can_focus (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> priv-&gt;h = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> priv-&gt;s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> priv-&gt;v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> priv-&gt;size = <span class='macro'>DEFAULT_SIZE<span class='macro_popup'>100</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> priv-&gt;ring_width = <span class='macro'>DEFAULT_RING_WIDTH<span class='macro_popup'>10</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">mate_hsv_destroy (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (mate_hsv_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_hsv_parent_class)), ((gtk_widget_get_type ()))))))</span></span>-&gt;destroy (widget);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line">mate_hsv_realize (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> GtkAllocation allocation;</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> GdkWindow *parent_window;</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> GdkWindowAttr attr;</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='keyword'>int</span> attr_mask;</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> gtk_widget_set_realized (widget, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> gtk_widget_get_allocation (widget, &amp;allocation);</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> attr.window_type = GDK_WINDOW_CHILD;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> attr.x = allocation.x;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> attr.y = allocation.y;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> attr.width = allocation.width;</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> attr.height = allocation.height;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> attr.wclass = GDK_INPUT_ONLY;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> attr.event_mask = gtk_widget_get_events (widget);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> attr.event_mask |= (GDK_KEY_PRESS_MASK</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> | GDK_BUTTON_PRESS_MASK</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> | GDK_BUTTON_RELEASE_MASK</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> | GDK_POINTER_MOTION_MASK</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> | GDK_ENTER_NOTIFY_MASK</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> | GDK_LEAVE_NOTIFY_MASK);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> attr_mask = GDK_WA_X | GDK_WA_Y;</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> parent_window = gtk_widget_get_parent_window (widget);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> gtk_widget_set_window (widget, parent_window);</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> <span class='macro'>g_object_ref (parent_window)<span class='macro_popup'>((__typeof__ (parent_window)) (g_object_ref) (parent_window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> priv-&gt;window = gdk_window_new (parent_window, &amp;attr, attr_mask);</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> gdk_window_set_user_data (priv-&gt;window, hsv);</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> gdk_window_show (priv-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line">mate_hsv_unrealize (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> gdk_window_set_user_data (priv-&gt;window, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> gdk_window_destroy (priv-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> priv-&gt;window = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (mate_hsv_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_hsv_parent_class)), ((gtk_widget_get_type ()))))))</span></span>-&gt;unrealize (widget);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line">mate_hsv_get_preferred_width (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> gint *natural)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> gint focus_pad;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, &amp;focus_width,</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span class='string_literal'>"focus-padding"</span>, &amp;focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> *minimum = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> *natural = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line">mate_hsv_get_preferred_height (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> gint *minimum,</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> gint *natural)</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> gint focus_pad;</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, &amp;focus_width,</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='string_literal'>"focus-padding"</span>, &amp;focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> *minimum = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> *natural = priv-&gt;size + 2 * (focus_width + focus_pad);</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line">mate_hsv_size_allocate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> GtkAllocation *allocation)</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> gtk_widget_set_allocation (widget, allocation);</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_realized (widget))</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> gdk_window_move_resize (priv-&gt;window,</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> allocation-&gt;x,</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> allocation-&gt;y,</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> allocation-&gt;width,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> allocation-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"><span class='comment'>/* Utility functions */</span></td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"><span class='directive'>#define <span class='macro'>INTENSITY(r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"><span class='comment'>/* Converts from HSV to RGB */</span></td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line">hsv_to_rgb (gdouble *h,</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> gdouble *s,</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> gdouble *v)</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> gdouble hue, saturation, value;</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> gdouble f, p, q, t;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>if</span> (*s == 0.0)</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> *h = *v;</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> *s = *v;</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> *v = *v; <span class='comment'>/* heh */</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> hue = *h * 6.0;</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> saturation = *s;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> value = *v;</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='keyword'>if</span> (hue == 6.0)</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> hue = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> f = hue - (<span class='keyword'>int</span>) hue;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> p = value * (1.0 - saturation);</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> q = value * (1.0 - saturation * f);</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> t = value * (1.0 - saturation * (1.0 - f));</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='keyword'>switch</span> ((<span class='keyword'>int</span>) hue)</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='keyword'>case</span> 0:</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> *h = value;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> *s = t;</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> *v = p;</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>case</span> 1:</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> *h = q;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> *s = value;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> *v = p;</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span class='keyword'>case</span> 2:</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> *h = p;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> *s = value;</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> *v = t;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> <span class='keyword'>case</span> 3:</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> *h = p;</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> *s = q;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> *v = value;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='keyword'>case</span> 4:</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> *h = t;</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> *s = p;</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> *v = value;</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>case</span> 5:</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> *h = value;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> *s = p;</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> *v = q;</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-hsv.c", 410<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/* Computes the vertices of the saturation/value triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">compute_triangle (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> gint *hx,</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> gint *hy,</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> gint *sx,</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> gint *sy,</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> gint *vx,</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> gint *vy)</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> gdouble center_x;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> gdouble center_y;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> gdouble inner, outer;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> gdouble angle;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> outer = priv-&gt;size / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> inner = outer - priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> angle = priv-&gt;h * 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> *hx = floor (center_x + cos (angle) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> *hy = floor (center_y - sin (angle) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> *sx = floor (center_x + cos (angle + 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> *sy = floor (center_y - sin (angle + 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> *vx = floor (center_x + cos (angle + 4.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> *vy = floor (center_y - sin (angle + 4.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span> / 3.0) * inner + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"><span class='comment'>/* Computes whether a point is inside the hue ring */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">is_in_ring (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> gdouble y)</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> gdouble dx, dy, dist;</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> gdouble center_x;</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> gdouble center_y;</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> gdouble inner, outer;</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> outer = priv-&gt;size / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> inner = outer - priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> dx = x - center_x;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> dy = center_y - y;</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> dist = dx * dx + dy * dy;</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> <span class='keyword'>return</span> (dist &gt;= inner * inner &amp;&amp; dist &lt;= outer * outer);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"><span class='comment'>/* Computes a saturation/value pair based on the mouse coordinates */</span></td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line">compute_sv (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> gdouble y,</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> gdouble *s,</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> gdouble *v)</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>int</span> ihx, ihy, isx, isy, ivx, ivy;</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>double</span> hx, hy, sx, sy, vx, vy;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>double</span> center_x;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>double</span> center_y;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> compute_triangle (hsv, &amp;ihx, &amp;ihy, &amp;isx, &amp;isy, &amp;ivx, &amp;ivy);</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> hx = ihx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> hy = center_y - ihy;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> sx = isx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> sy = center_y - isy;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> vx = ivx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> vy = center_y - ivy;</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> x -= center_x;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> y = center_y - y;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (vx * (x - sx) + vy * (y - sy) &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> *s = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> *v = (((x - sx) * (hx - sx) + (y - sy) * (hy-sy))</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> / ((hx - sx) * (hx - sx) + (hy - sy) * (hy - sy)));</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='keyword'>if</span> (*v &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> *v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*v &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (hx * (x - sx) + hy * (y - sy) &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> *v = (((x - sx) * (vx - sx) + (y - sy) * (vy - sy))</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> / ((vx - sx) * (vx - sx) + (vy - sy) * (vy - sy)));</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>if</span> (*v &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> *v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*v &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (sx * (x - hx) + sy * (y - hy) &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> *s = (((x - vx) * (hx - vx) + (y - vy) * (hy - vy)) /</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> ((hx - vx) * (hx - vx) + (hy - vy) * (hy - vy)));</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='keyword'>if</span> (*s &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*s &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> *s = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> *v = (((x - sx) * (hy - vy) - (y - sy) * (hx - vx))</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> / ((vx - sx) * (hy - vy) - (vy - sy) * (hx - vx)));</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='keyword'>if</span> (*v&lt;= 0.0)</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> *v = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='keyword'>if</span> (*v &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> *v = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='keyword'>if</span> (fabs (hy - vy) &lt; fabs (hx - vx))</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> *s = (x - sx - *v * (vx - sx)) / (*v * (hx - vx));</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> *s = (y - sy - *v * (vy - sy)) / (*v * (hy - vy));</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='keyword'>if</span> (*s &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> *s = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (*s &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> *s = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='comment'>/* Computes whether a point is inside the saturation/value triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line">is_in_triangle (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> gdouble y)</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> <span class='keyword'>int</span> hx, hy, sx, sy, vx, vy;</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>double</span> det, s, v;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> compute_triangle (hsv, &amp;hx, &amp;hy, &amp;sx, &amp;sy, &amp;vx, &amp;vy);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> det = (vx - sx) * (hy - sy) - (vy - sy) * (hx - sx);</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> s = ((x - sx) * (hy - sy) - (y - sy) * (hx - sx)) / det;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> v = ((vx - sx) * (y - sy) - (vy - sy) * (x - sx)) / det;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>return</span> (s &gt;= 0.0 &amp;&amp; v &gt;= 0.0 &amp;&amp; s + v &lt;= 1.0);</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"><span class='comment'>/* Computes a value based on the mouse coordinates */</span></td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line">compute_v (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> gdouble x,</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> gdouble y)</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>double</span> center_x;</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='keyword'>double</span> center_y;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>double</span> dx, dy;</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> <span class='keyword'>double</span> angle;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> center_x = gtk_widget_get_allocated_width (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> center_y = gtk_widget_get_allocated_height (widget) / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> dx = x - center_x;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> dy = center_y - y;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> angle = atan2 (dy, dx);</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (angle &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> angle += 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> <span class='keyword'>return</span> angle / (2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"><span class='comment'>/* Event handlers */</span></td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line">set_cross_grab (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> GdkDevice *device,</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> guint32 time)</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> GdkCursor *cursor;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> cursor = gdk_cursor_new_for_display (gtk_widget_get_display (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> GDK_CROSSHAIR);</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> gdk_seat_grab (gdk_device_get_seat (device),</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> priv-&gt;window,</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> GDK_SEAT_CAPABILITY_ALL_POINTING,</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> cursor,</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> g_object_unref (cursor);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line">mate_hsv_grab_broken (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> GdkEventGrabBroken *event)</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> priv-&gt;mode = DRAG_NONE;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line">mate_hsv_button_press (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='keyword'>double</span> x, y;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode != DRAG_NONE || event-&gt;button != <span class='macro'>GDK_BUTTON_PRIMARY<span class='macro_popup'>(1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> x = event-&gt;x;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> y = event-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>if</span> (is_in_ring (hsv, x, y))</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> priv-&gt;mode = <span class="mrange">DRAG_H</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:20ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> set_cross_grab (hsv, gdk_event_get_device ((GdkEvent *) event), event-&gt;time);</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> mate_hsv_set_color (hsv,</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> compute_v (hsv, x, y),</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> priv-&gt;s,</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> priv-&gt;v);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> gtk_widget_grab_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>if</span> (is_in_triangle (hsv, x, y))</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> gdouble s, v;</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> priv-&gt;mode = DRAG_SV;</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> set_cross_grab (hsv, gdk_event_get_device ((GdkEvent *) event), event-&gt;time);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> compute_sv (hsv, x, y, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> mate_hsv_set_color (hsv, priv-&gt;h, s, v);</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> gtk_widget_grab_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line">mate_hsv_button_release (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> DragMode mode;</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> gdouble x, y;</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_NONE || event-&gt;button != <span class='macro'>GDK_BUTTON_PRIMARY<span class='macro_popup'>(1)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='comment'>/* Set the drag mode to DRAG_NONE so that signal handlers for "catched"</span></td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='comment'>* can see that this is the final color state.</span></td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> mode = priv-&gt;mode;</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> priv-&gt;mode = DRAG_NONE;</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> x = event-&gt;x;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> y = event-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='keyword'>if</span> (mode == DRAG_H)</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> mate_hsv_set_color (hsv, compute_v (hsv, x, y), priv-&gt;s, priv-&gt;v);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (mode == DRAG_SV)</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> gdouble s, v;</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> compute_sv (hsv, x, y, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> mate_hsv_set_color (hsv, priv-&gt;h, s, v);</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-hsv.c", 719<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> gdk_seat_ungrab (gdk_device_get_seat (gdk_event_get_device ((GdkEvent *) event)));</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">mate_hsv_motion (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> GdkEventMotion *event)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> gdouble x, y;</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_NONE)</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> gdk_event_request_motions (event);</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> x = event-&gt;x;</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> y = event-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_H)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> mate_hsv_set_color (hsv, compute_v (hsv, x, y), priv-&gt;s, priv-&gt;v);</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (priv-&gt;mode == DRAG_SV)</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> gdouble s, v;</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> compute_sv (hsv, x, y, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> mate_hsv_set_color (hsv, priv-&gt;h, s, v);</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-hsv.c", 756<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"><span class='comment'>/* Redrawing */</span></td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/* Paints the hue ring */</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line">paint_ring (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> cairo_t *cr)</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='keyword'>int</span> xx, yy, width, height;</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> gdouble dx, dy, dist;</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> gdouble center_x;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> gdouble center_y;</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> gdouble inner, outer;</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> guint32 *buf, *p;</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> gdouble angle;</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> gdouble hue;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> gdouble r, g, b;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> cairo_surface_t *source;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> cairo_t *source_cr;</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> gint stride;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> width = gtk_widget_get_allocated_width (widget);</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> height = gtk_widget_get_allocated_height (widget);</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> center_x = width / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> center_y = height / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> outer = priv-&gt;size / 2.0;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> inner = outer - priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='comment'>/* Create an image initialized with the ring colors */</span></td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width);</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> buf = <span class='macro'>g_new (guint32, height * stride / 4)<span class='macro_popup'>((guint32 *) g_malloc_n ((height * stride / 4), sizeof (guint32<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> <span class='keyword'>for</span> (yy = 0; yy &lt; height; yy++)</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> p = buf + yy * width;</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> dy = -(yy - center_y);</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='keyword'>for</span> (xx = 0; xx &lt; width; xx++)</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> dx = xx - center_x;</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> dist = dx * dx + dy * dy;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='keyword'>if</span> (dist &lt; ((inner-1) * (inner-1)) || dist &gt; ((outer+1) * (outer+1)))</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> *p++ = 0;</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> angle = atan2 (dy, dx);</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> <span class='keyword'>if</span> (angle &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> angle += 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> hue = angle / (2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> r = hue;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> g = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> b = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> hsv_to_rgb (&amp;r, &amp;g, &amp;b);</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> *p++ = (((<span class='keyword'>int</span>)(r * 255.0) &lt;&lt; 16) |</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> ((<span class='keyword'>int</span>)(g * 255.0) &lt;&lt; 8) |</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> (<span class='keyword'>int</span>)(b * 255.0));</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> source = cairo_image_surface_create_for_data ((<span class='keyword'>unsigned</span> <span class='keyword'>char</span> *)buf,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> CAIRO_FORMAT_RGB24,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> width, height, stride);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> <span class='comment'>/* Now draw the value marker onto the source image, so that it</span></td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> <span class='comment'>* will get properly clipped at the edges of the ring</span></td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> source_cr = cairo_create (source);</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> r = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> g = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> b = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> hsv_to_rgb (&amp;r, &amp;g, &amp;b);</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>INTENSITY (r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> &gt; 0.5)</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> cairo_set_source_rgb (source_cr, 0., 0., 0.);</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> cairo_set_source_rgb (source_cr, 1., 1., 1.);</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> cairo_move_to (source_cr, center_x, center_y);</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> cairo_line_to (source_cr,</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> center_x + cos (priv-&gt;h * 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>) * priv-&gt;size / 2,</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> center_y - sin (priv-&gt;h * 2.0 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>) * priv-&gt;size / 2);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> cairo_stroke (source_cr);</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> cairo_destroy (source_cr);</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='comment'>/* Draw the ring using the source image */</span></td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> cairo_save (cr);</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> cairo_set_source_surface (cr, source, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> cairo_surface_destroy (source);</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> cairo_set_line_width (cr, priv-&gt;ring_width);</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> cairo_new_path (cr);</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> cairo_arc (cr,</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> center_x, center_y,</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> priv-&gt;size / 2. - priv-&gt;ring_width / 2.,</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> 0, 2 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> cairo_stroke (cr);</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> cairo_restore (cr);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> g_free (buf);</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"><span class='comment'>/* Converts an HSV triplet to an integer RGB triplet */</span></td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line">get_color (gdouble h,</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> gdouble s,</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> gdouble v,</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> gint *r,</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> gint *g,</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> gint *b)</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> hsv_to_rgb (&amp;h, &amp;s, &amp;v);</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> *r = floor (h * 255 + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> *g = floor (s * 255 + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> *b = floor (v * 255 + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"><span class='directive'>#define <span class='macro'>SWAP(a, b, t)<span class='macro_popup'>((t) = (a), (a) = (b), (b) = (t))</span></span> ((t) = (a), (a) = (b), (b) = (t))</span></td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"><span class='directive'>#define <span class='macro'>LERP(a, b, v1, v2, i)<span class='macro_popup'>(((v2) - (v1) != 0) ? ((a) + ((b) - (a)) * ((i) - (v1)) / ((v2<br>) - (v1))) : (a))</span></span> (((v2) - (v1) != 0) \</span></td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='directive'>? ((a) + ((b) - (a)) * ((i) - (v1)) / ((v2) - (v1))) \</span></td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='directive'>: (a))</span></td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"><span class='comment'>/* Number of pixels we extend out from the edges when creating</span></td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='comment'>* color source to avoid artifacts</span></td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"><span class='directive'>#define <span class='macro'>PAD<span class='macro_popup'>3</span></span> 3</span></td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"><span class='comment'>/* Paints the HSV triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">paint_triangle (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> gboolean draw_focus)</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> GtkWidget *widget = <span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> gint hx, hy, sx, sy, vx, vy; <span class='comment'>/* HSV vertices */</span></td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> gint x1, y1, r1, g1, b1; <span class='comment'>/* First vertex in scanline order */</span></td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> gint x2, y2, r2, g2, b2; <span class='comment'>/* Second vertex */</span></td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> gint x3, y3, r3, g3, b3; <span class='comment'>/* Third vertex */</span></td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> gint t;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> guint32 *buf, *p, c;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> gint xl, xr, rl, rr, gl, gr, bl, br; <span class='comment'>/* Scanline data */</span></td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> gint xx, yy;</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> gint x_interp, y_interp;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> gint x_start, x_end;</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> cairo_surface_t *source;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> gdouble r, g, b;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> gint stride;</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>int</span> width, height;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> GtkStyleContext *context;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> width = gtk_widget_get_allocated_width (widget);</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> height = gtk_widget_get_allocated_height (widget);</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='comment'>/* Compute triangle's vertices */</span></td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> compute_triangle (hsv, &amp;hx, &amp;hy, &amp;sx, &amp;sy, &amp;vx, &amp;vy);</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> x1 = hx;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> y1 = hy;</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> get_color (priv-&gt;h, 1.0, 1.0, &amp;r1, &amp;g1, &amp;b1);</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> x2 = sx;</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> y2 = sy;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> get_color (priv-&gt;h, 1.0, 0.0, &amp;r2, &amp;g2, &amp;b2);</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> x3 = vx;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> y3 = vy;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> get_color (priv-&gt;h, 0.0, 1.0, &amp;r3, &amp;g3, &amp;b3);</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>if</span> (y2 &gt; y3)</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='macro'>SWAP (x2, x3, t)<span class='macro_popup'>((t) = (x2), (x2) = (x3), (x3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='macro'>SWAP (y2, y3, t)<span class='macro_popup'>((t) = (y2), (y2) = (y3), (y3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='macro'>SWAP (r2, r3, t)<span class='macro_popup'>((t) = (r2), (r2) = (r3), (r3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> <span class='macro'>SWAP (g2, g3, t)<span class='macro_popup'>((t) = (g2), (g2) = (g3), (g3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> <span class='macro'>SWAP (b2, b3, t)<span class='macro_popup'>((t) = (b2), (b2) = (b3), (b3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='keyword'>if</span> (y1 &gt; y3)</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> <span class='macro'>SWAP (x1, x3, t)<span class='macro_popup'>((t) = (x1), (x1) = (x3), (x3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> <span class='macro'>SWAP (y1, y3, t)<span class='macro_popup'>((t) = (y1), (y1) = (y3), (y3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> <span class='macro'>SWAP (r1, r3, t)<span class='macro_popup'>((t) = (r1), (r1) = (r3), (r3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> <span class='macro'>SWAP (g1, g3, t)<span class='macro_popup'>((t) = (g1), (g1) = (g3), (g3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> <span class='macro'>SWAP (b1, b3, t)<span class='macro_popup'>((t) = (b1), (b1) = (b3), (b3) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> <span class='keyword'>if</span> (y1 &gt; y2)</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> <span class='macro'>SWAP (x1, x2, t)<span class='macro_popup'>((t) = (x1), (x1) = (x2), (x2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> <span class='macro'>SWAP (y1, y2, t)<span class='macro_popup'>((t) = (y1), (y1) = (y2), (y2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='macro'>SWAP (r1, r2, t)<span class='macro_popup'>((t) = (r1), (r1) = (r2), (r2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='macro'>SWAP (g1, g2, t)<span class='macro_popup'>((t) = (g1), (g1) = (g2), (g2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='macro'>SWAP (b1, b2, t)<span class='macro_popup'>((t) = (b1), (b1) = (b2), (b2) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> <span class='comment'>/* Shade the triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width);</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> buf = <span class='macro'>g_new (guint32, height * stride / 4)<span class='macro_popup'>((guint32 *) g_malloc_n ((height * stride / 4), sizeof (guint32<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>for</span> (yy = 0; yy &lt; height; yy++)</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> p = buf + yy * width;</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> <span class='keyword'>if</span> (yy &gt;= y1 - <span class='macro'>PAD<span class='macro_popup'>3</span></span> &amp;&amp; yy &lt; y3 + <span class='macro'>PAD<span class='macro_popup'>3</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> y_interp = <span class='macro'>CLAMP (yy, y1, y3)<span class='macro_popup'>(((yy) &gt; (y3)) ? (y3) : (((yy) &lt; (y1)) ? (y1) : (yy)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> <span class='keyword'>if</span> (y_interp &lt; y2)</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> xl = <span class='macro'>LERP (x1, x2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((x1) + ((x2) - (x1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (x1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> rl = <span class='macro'>LERP (r1, r2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((r1) + ((r2) - (r1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (r1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> gl = <span class='macro'>LERP (g1, g2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((g1) + ((g2) - (g1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (g1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> bl = <span class='macro'>LERP (b1, b2, y1, y2, y_interp)<span class='macro_popup'>(((y2) - (y1) != 0) ? ((b1) + ((b2) - (b1)) * ((y_interp) - (<br>y1)) / ((y2) - (y1))) : (b1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> xl = <span class='macro'>LERP (x2, x3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((x2) + ((x3) - (x2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (x2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> rl = <span class='macro'>LERP (r2, r3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((r2) + ((r3) - (r2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (r2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> gl = <span class='macro'>LERP (g2, g3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((g2) + ((g3) - (g2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (g2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> bl = <span class='macro'>LERP (b2, b3, y2, y3, y_interp)<span class='macro_popup'>(((y3) - (y2) != 0) ? ((b2) + ((b3) - (b2)) * ((y_interp) - (<br>y2)) / ((y3) - (y2))) : (b2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> xr = <span class='macro'>LERP (x1, x3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((x1) + ((x3) - (x1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (x1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> rr = <span class='macro'>LERP (r1, r3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((r1) + ((r3) - (r1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (r1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> gr = <span class='macro'>LERP (g1, g3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((g1) + ((g3) - (g1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (g1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> br = <span class='macro'>LERP (b1, b3, y1, y3, y_interp)<span class='macro_popup'>(((y3) - (y1) != 0) ? ((b1) + ((b3) - (b1)) * ((y_interp) - (<br>y1)) / ((y3) - (y1))) : (b1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>if</span> (xl &gt; xr)</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> <span class='macro'>SWAP (xl, xr, t)<span class='macro_popup'>((t) = (xl), (xl) = (xr), (xr) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>SWAP (rl, rr, t)<span class='macro_popup'>((t) = (rl), (rl) = (rr), (rr) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='macro'>SWAP (gl, gr, t)<span class='macro_popup'>((t) = (gl), (gl) = (gr), (gr) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> <span class='macro'>SWAP (bl, br, t)<span class='macro_popup'>((t) = (bl), (bl) = (br), (br) = (t))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> x_start = <span class='macro'>MAX (xl - PAD, 0)<span class='macro_popup'>(((xl - 3) &gt; (0)) ? (xl - 3) : (0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> x_end = <span class='macro'>MIN (xr + PAD, width)<span class='macro_popup'>(((xr + 3) &lt; (width)) ? (xr + 3) : (width))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> x_start = <span class='macro'>MIN (x_start, x_end)<span class='macro_popup'>(((x_start) &lt; (x_end)) ? (x_start) : (x_end))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> c = (rl &lt;&lt; 16) | (gl &lt;&lt; 8) | bl;</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> <span class='keyword'>for</span> (xx = 0; xx &lt; x_start; xx++)</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> *p++ = c;</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> <span class='keyword'>for</span> (; xx &lt; x_end; xx++)</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> x_interp = <span class='macro'>CLAMP (xx, xl, xr)<span class='macro_popup'>(((xx) &gt; (xr)) ? (xr) : (((xx) &lt; (xl)) ? (xl) : (xx)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> *p++ = ((<span class='macro'>LERP (rl, rr, xl, xr, x_interp)<span class='macro_popup'>(((xr) - (xl) != 0) ? ((rl) + ((rr) - (rl)) * ((x_interp) - (<br>xl)) / ((xr) - (xl))) : (rl))</span></span> &lt;&lt; 16) |</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> (<span class='macro'>LERP (gl, gr, xl, xr, x_interp)<span class='macro_popup'>(((xr) - (xl) != 0) ? ((gl) + ((gr) - (gl)) * ((x_interp) - (<br>xl)) / ((xr) - (xl))) : (gl))</span></span> &lt;&lt; 8) |</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> <span class='macro'>LERP (bl, br, xl, xr, x_interp)<span class='macro_popup'>(((xr) - (xl) != 0) ? ((bl) + ((br) - (bl)) * ((x_interp) - (<br>xl)) / ((xr) - (xl))) : (bl))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> c = (rr &lt;&lt; 16) | (gr &lt;&lt; 8) | br;</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> <span class='keyword'>for</span> (; xx &lt; width; xx++)</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> *p++ = c;</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> source = cairo_image_surface_create_for_data ((<span class='keyword'>unsigned</span> <span class='keyword'>char</span> *)buf,</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> CAIRO_FORMAT_RGB24,</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> width, height, stride);</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> <span class='comment'>/* Draw a triangle with the image as a source */</span></td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> cairo_set_source_surface (cr, source, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> cairo_surface_destroy (source);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> cairo_move_to (cr, x1, y1);</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> cairo_line_to (cr, x2, y2);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> cairo_line_to (cr, x3, y3);</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> cairo_close_path (cr);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> cairo_fill (cr);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> g_free (buf);</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='comment'>/* Draw value marker */</span></td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> xx = floor (sx + (vx - sx) * priv-&gt;v + (hx - vx) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> yy = floor (sy + (vy - sy) * priv-&gt;v + (hy - vy) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> r = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> g = priv-&gt;s;</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> b = priv-&gt;v;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> hsv_to_rgb (&amp;r, &amp;g, &amp;b);</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> context = gtk_widget_get_style_context (widget);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> gtk_style_context_save (context);</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>INTENSITY (r, g, b)<span class='macro_popup'>((r) * 0.30 + (g) * 0.59 + (b) * 0.11)</span></span> &gt; 0.5)</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> gtk_style_context_add_class (context, <span class='string_literal'>"light-area-focus"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> cairo_set_source_rgb (cr, 0., 0., 0.);</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> gtk_style_context_add_class (context, <span class='string_literal'>"dark-area-focus"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> cairo_set_source_rgb (cr, 1., 1., 1.);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"><span class='directive'>#define <span class='macro'>RADIUS<span class='macro_popup'>4</span></span> 4</span></td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='directive'>#define <span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> 6</span></td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> cairo_new_path (cr);</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> cairo_arc (cr, xx, yy, <span class='macro'>RADIUS<span class='macro_popup'>4</span></span>, 0, 2 * <span class='macro'>G_PI<span class='macro_popup'>3.1415926535897932384626433832795028841971693993751</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> cairo_stroke (cr);</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>/* Draw focus outline */</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='keyword'>if</span> (draw_focus &amp;&amp; !priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> gint focus_width;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> gint focus_pad;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> <span class='string_literal'>"focus-line-width"</span>, &amp;focus_width,</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> <span class='string_literal'>"focus-padding"</span>, &amp;focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> gtk_render_focus (context, cr,</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> xx - <span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> - focus_width - focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> yy - <span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> - focus_width - focus_pad,</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> 2 * (<span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> + focus_width + focus_pad),</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> 2 * (<span class='macro'>FOCUS_RADIUS<span class='macro_popup'>6</span></span> + focus_width + focus_pad));</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gtk_style_context_restore (context);</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"><span class='comment'>/* Paints the contents of the HSV color selector */</span></td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line">mate_hsv_draw (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> cairo_t *cr)</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> gboolean draw_focus;</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> draw_focus = gtk_widget_has_visible_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> paint_ring (hsv, cr);</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> paint_triangle (hsv, cr, draw_focus);</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='keyword'>if</span> (draw_focus &amp;&amp; priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> GtkStyleContext *context;</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> context = gtk_widget_get_style_context (widget);</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> gtk_render_focus (context, cr, 0, 0,</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> gtk_widget_get_allocated_width (widget),</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> gtk_widget_get_allocated_height (widget));</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line">mate_hsv_focus (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> GtkDirectionType dir)</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> MateHSV *hsv = <span class='macro'>MATE_HSV (widget)<span class='macro_popup'>((((MateHSV*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((widget)), ((mate_hsv_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='keyword'>if</span> (!gtk_widget_has_focus (widget))</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='keyword'>if</span> (dir == GTK_DIR_TAB_BACKWARD)</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> gtk_widget_grab_focus (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>switch</span> (dir)</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_UP:</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_DOWN:</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_LEFT:</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_TAB_BACKWARD:</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_RIGHT:</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_TAB_FORWARD:</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> priv-&gt;focus_on_ring = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> <span class='comment'>* mate_hsv_new:</span></td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='comment'>* Creates a new HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='comment'>* Returns: A newly-created HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line">GtkWidget*</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line">mate_hsv_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> g_object_new (<span class='macro'>MATE_TYPE_HSV<span class='macro_popup'>(mate_hsv_get_type ())</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='comment'>* mate_hsv_set_color:</span></td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> <span class='comment'>* @h: Hue</span></td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> <span class='comment'>* @s: Saturation</span></td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> <span class='comment'>* @v: Value</span></td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> <span class='comment'>* Sets the current color in an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='comment'>* Color component values must be in the [0.0, 1.0] range.</span></td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line">mate_hsv_set_color (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> gdouble h,</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> gdouble s,</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> gdouble v)</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> <span class='macro'>g_return_if_fail (h &gt;= 0.0 &amp;&amp; h &lt;= 1.0)<span class='macro_popup'>do { if ((h &gt;= 0.0 &amp;&amp; h &lt;= 1.0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "h &gt;= 0.0 &amp;&amp; h &lt;= 1.0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='macro'>g_return_if_fail (s &gt;= 0.0 &amp;&amp; s &lt;= 1.0)<span class='macro_popup'>do { if ((s &gt;= 0.0 &amp;&amp; s &lt;= 1.0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "s &gt;= 0.0 &amp;&amp; s &lt;= 1.0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='macro'>g_return_if_fail (v &gt;= 0.0 &amp;&amp; v &lt;= 1.0)<span class='macro_popup'>do { if ((v &gt;= 0.0 &amp;&amp; v &lt;= 1.0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "v &gt;= 0.0 &amp;&amp; v &lt;= 1.0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> priv-&gt;h = h;</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> priv-&gt;s = s;</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> priv-&gt;v = v;</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> g_signal_emit (hsv, hsv_signals[CHANGED], 0);</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='comment'>* mate_hsv_get_color:</span></td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> <span class='comment'>* @h: (out): Return value for the hue</span></td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> <span class='comment'>* @s: (out): Return value for the saturation</span></td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='comment'>* @v: (out): Return value for the value</span></td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> <span class='comment'>* Queries the current color in an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> <span class='comment'>* Returned values will be in the [0.0, 1.0] range.</span></td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line">mate_hsv_get_color (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>double</span> *h,</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>double</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='keyword'>double</span> *v)</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (h)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> *h = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> <span class='keyword'>if</span> (s)</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> *s = priv-&gt;s;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> <span class='keyword'>if</span> (v)</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> *v = priv-&gt;v;</td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> <span class='comment'>* mate_hsv_set_metrics:</span></td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='comment'>* @size: Diameter for the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> <span class='comment'>* @ring_width: Width of the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> <span class='comment'>* Sets the size and ring width of an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line">mate_hsv_set_metrics (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> gint size,</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> gint ring_width)</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>int</span> same_size;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='macro'>g_return_if_fail (size &gt; 0)<span class='macro_popup'>do { if ((size &gt; 0)) { } else { g_return_if_fail_warning (<br>"MateDesktop", ((const char*) (__func__)), "size &gt; 0"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='macro'>g_return_if_fail (ring_width &gt; 0)<span class='macro_popup'>do { if ((ring_width &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "ring_width &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='macro'>g_return_if_fail (2 * ring_width + 1 &lt;= size)<span class='macro_popup'>do { if ((2 * ring_width + 1 &lt;= size)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "2 * ring_width + 1 &lt;= size"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> same_size = (priv-&gt;size == size);</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> priv-&gt;size = size;</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> priv-&gt;ring_width = ring_width;</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> <span class='keyword'>if</span> (same_size)</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> gtk_widget_queue_resize (<span class='macro'>GTK_WIDGET (hsv)<span class='macro_popup'>((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((hsv)), ((gtk_widget_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> <span class='comment'>* mate_hsv_get_metrics:</span></td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> <span class='comment'>* @hsv: An HSV color selector</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='comment'>* @size: (out): Return value for the diameter of the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='comment'>* @ring_width: (out): Return value for the width of the hue ring</span></td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> <span class='comment'>* Queries the size and ring width of an HSV color selector.</span></td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line">mate_hsv_get_metrics (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> gint *size,</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> gint *ring_width)</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_HSV (hsv))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>if</span> (size)</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> *size = priv-&gt;size;</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> <span class='keyword'>if</span> (ring_width)</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> *ring_width = priv-&gt;ring_width;</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='comment'>* mate_hsv_is_adjusting:</span></td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='comment'>* @hsv: A #MateHSV</span></td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> <span class='comment'>* An HSV color selector can be said to be adjusting if multiple rapid</span></td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> <span class='comment'>* changes are being made to its value, for example, when the user is</span></td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='comment'>* adjusting the value with the mouse. This function queries whether</span></td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='comment'>* the HSV color selector is being adjusted or not.</span></td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='comment'>* Returns: %TRUE if clients can ignore changes to the color value,</span></td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='comment'>* since they may be transitory, or %FALSE if they should consider</span></td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> <span class='comment'>* the color value status to be final.</span></td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line">mate_hsv_is_adjusting (MateHSV *hsv)</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> MateHSVPrivate *priv;</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='macro'>g_return_val_if_fail (MATE_IS_HSV (hsv), FALSE)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((hsv)); GType __t = ((mate_hsv_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_HSV (hsv)"); return ((0)); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> <span class='keyword'>return</span> priv-&gt;mode != DRAG_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line">mate_hsv_move (MateHSV *hsv,</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> GtkDirectionType dir)</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> MateHSVPrivate *priv = hsv-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> gdouble hue, sat, val;</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> gint hx, hy, sx, sy, vx, vy; <span class='comment'>/* HSV vertices */</span></td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> gint x, y; <span class='comment'>/* position in triangle */</span></td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> hue = priv-&gt;h;</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> sat = priv-&gt;s;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> val = priv-&gt;v;</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> compute_triangle (hsv, &amp;hx, &amp;hy, &amp;sx, &amp;sy, &amp;vx, &amp;vy);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> x = floor (sx + (vx - sx) * priv-&gt;v + (hx - vx) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> y = floor (sy + (vy - sy) * priv-&gt;v + (hy - vy) * priv-&gt;s * priv-&gt;v + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"><span class='directive'>#define <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span> 0.002</span></td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>switch</span> (dir)</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_UP:</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> hue += <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> y -= 1;</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_DOWN:</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> hue -= <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> y += 1;</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_LEFT:</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> hue += <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> x -= 1;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> <span class='keyword'>case</span> GTK_DIR_RIGHT:</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;focus_on_ring)</td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> hue -= <span class='macro'>HUE_DELTA<span class='macro_popup'>0.002</span></span></td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> x += 1;</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> compute_sv (hsv, x, y, &amp;sat, &amp;val);</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> <span class='comment'>/* we don't care about the tab directions */</span></td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='comment'>/* Wrap */</span></td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> <span class='keyword'>if</span> (hue &lt; 0.0)</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> hue = 1.0;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (hue &gt; 1.0)</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> hue = 0.0;</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> mate_hsv_set_color (hsv, hue, sat, val);</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-563e6a.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-563e6a.html
new file mode 100644
index 0000000..ee4a3fc
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-563e6a.html
@@ -0,0 +1,2013 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-languages.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-languages.c -->
+
+<!-- FILENAME mate-languages.c -->
+
+<!-- FUNCTIONNAME mate_get_language_from_locale -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 563e6a2bffe3777bce6a433a16163497 -->
+
+<!-- BUGLINE 1163 -->
+
+<!-- BUGCOLUMN 17 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-languages.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1163, column 17</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-languages.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-languages.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1163": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright 2008 Red Hat, Inc,</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* 2007 William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* along with this program; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* Written by : William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Ray Strode &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;sys/stat.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;glib/gstdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include "mate-languages.h"</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#ifndef <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span> 13</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/xml/iso-codes"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/locale"</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _MateLocale {</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='keyword'>char</span> *id;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> <span class='keyword'>char</span> *language_code;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> <span class='keyword'>char</span> *territory_code;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='keyword'>char</span> *codeset;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='keyword'>char</span> *modifier;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line">} MateLocale;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_languages_map;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territories_map;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_available_locales_map;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_language_count_map;</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territory_count_map;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> * construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier);</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>static</span> gboolean language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name);</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line">mate_locale_free (MateLocale *locale)</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> g_free (locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> g_free (locale-&gt;codeset);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> g_free (locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> g_free (locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> g_free (locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">normalize_codeset (<span class='keyword'>const</span> <span class='keyword'>char</span> *codeset)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>if</span> (codeset == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (codeset, <span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("UTF-8")) ==<br> 0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='macro'>g_str_equal (codeset, <span class='string_literal'>"utf8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("utf8")) ==<br> 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='comment'>* mate_parse_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='comment'>* @language_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> <span class='comment'>* store the language code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* @country_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>* store the country code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> <span class='comment'>* @codesetp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>* store the codeset, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='comment'>* @modifierp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> <span class='comment'>* store the modifier, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='comment'>* Extracts the various components of a locale string of the form</span></td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]]. See</span></td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='comment'>* http://en.wikipedia.org/wiki/Locale.</span></td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> <span class='comment'>* Return value: %TRUE if parsing was successful.</span></td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line">mate_parse_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> <span class='keyword'>char</span> **language_codep,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>char</span> **country_codep,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>char</span> **codesetp,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>char</span> **modifierp)</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>static</span> GRegex *re = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> GMatchInfo *match_info;</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gchar *normalized_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> gchar *normalized_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> match_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> retval = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> re = g_regex_new (<span class='string_literal'>"^(?P&lt;language&gt;[^_.@[:space:]]+)"</span></td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='string_literal'>"(_(?P&lt;territory&gt;[[:upper:]]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='string_literal'>"(\\.(?P&lt;codeset&gt;[-_0-9a-zA-Z]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='string_literal'>"(@(?P&lt;modifier&gt;[[:ascii:]]+))?$"</span>,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> 0, 0, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> g_warning (<span class='string_literal'>"%s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='keyword'>if</span> (!g_regex_match (re, locale, 0, &amp;match_info) ||</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> g_match_info_is_partial_match (match_info)) {</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> g_warning (<span class='string_literal'>"locale '%s' isn't valid\n"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> res = g_match_info_matches (match_info);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> g_warning (<span class='string_literal'>"Unable to parse locale: %s"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> retval = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>if</span> (language_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> *language_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"language"</span>);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='keyword'>if</span> (country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> *country_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"territory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='keyword'>if</span> (*country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> *country_codep[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> g_free (*country_codep);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> *country_codep = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> *codesetp = g_match_info_fetch_named (match_info, <span class='string_literal'>"codeset"</span>);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (*codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> *codesetp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> *codesetp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='keyword'>if</span> (modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> *modifierp = g_match_info_fetch_named (match_info, <span class='string_literal'>"modifier"</span>);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (*modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> *modifierp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> g_free (*modifierp);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> *modifierp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; *codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> normalized_codeset = normalize_codeset (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> normalized_name = construct_language_name (language_codep ? *language_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> country_codep ? *country_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> normalized_codeset,</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> modifierp ? *modifierp : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (language_name_is_valid (normalized_name)) {</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> *codesetp = normalized_codeset;</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> g_free (normalized_codeset);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> g_free (normalized_name);</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> g_match_info_free (match_info);</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line">construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier)</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='macro'>g_assert (language != NULL &amp;&amp; language[0] != 0)<span class='macro_popup'>do { if (language != ((void*)0) &amp;&amp; language[0] != 0) ;<br> else g_assertion_message_expr ("MateDesktop", "mate-languages.c"<br>, 230, ((const char*) (__func__)), "language != NULL &amp;&amp; language[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='macro'>g_assert (territory == NULL || territory[0] != 0)<span class='macro_popup'>do { if (territory == ((void*)0) || territory[0] != 0) ; else<br> g_assertion_message_expr ("MateDesktop", "mate-languages.c",<br> 231, ((const char*) (__func__)), "territory == NULL || territory[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='macro'>g_assert (codeset == NULL || codeset[0] != 0)<span class='macro_popup'>do { if (codeset == ((void*)0) || codeset[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 232, ((const char*) (__func__<br>)), "codeset == NULL || codeset[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='macro'>g_assert (modifier == NULL || modifier[0] != 0)<span class='macro_popup'>do { if (modifier == ((void*)0) || modifier[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 233, ((const char*) (__func__<br>)), "modifier == NULL || modifier[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s%s%s%s%s%s%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> language,</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"_"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? territory : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"."</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? codeset : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"@"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? modifier : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>* mate_normalize_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='comment'>* Gets the normalized locale string in the form</span></td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]] for @name.</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>* Return value: (transfer full): normalized locale string. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line">mate_normalize_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='keyword'>char</span> *normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> gboolean valid;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *modifier = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (locale[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> valid = mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> &amp;codeset, &amp;modifier);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='keyword'>if</span> (!valid)</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> normalized_name = construct_language_name (language_code,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> territory_code,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> codeset, modifier);</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>return</span> normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name)</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gboolean is_valid;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>int</span> lc_type_id = <span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (lc_type_id, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (lc_type_id, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> is_valid = setlocale (lc_type_id, language_name) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> setlocale (lc_type_id, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>return</span> is_valid;</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">language_name_get_codeset_details (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='keyword'>char</span> **pcodeset,</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> gboolean *is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_CTYPE, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (0, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>if</span> (setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, language_name) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> codeset = nl_langinfo (<span class='macro'>CODESET<span class='macro_popup'>CODESET</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>if</span> (pcodeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> *pcodeset = <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>if</span> (is_utf8 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> codeset = normalize_codeset (codeset);</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> *is_utf8 = strcmp (codeset, <span class='string_literal'>"UTF-8"</span>) == 0;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line">locale_dir_has_mo_files (<span class='keyword'>const</span> gchar* path)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> GDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> has_translations = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> dir = g_dir_open (path, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>if</span> (dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> name = g_dir_read_name (dir);</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_has_suffix (name, <span class='string_literal'>".mo"</span>)<span class='macro_popup'>(__builtin_constant_p (".mo")? __extension__ ({ const char * const<br> __str = (name); const char * const __suffix = (".mo"); gboolean<br> __result = (0); if (__str == ((void*)0) || __suffix == ((void<br>*)0)) __result = (g_str_has_suffix) (__str, __suffix); else {<br> const size_t __str_len = strlen (((__str) + !(__str))); const<br> size_t __suffix_len = strlen (((__suffix) + !(__suffix))); if<br> (__str_len &gt;= __suffix_len) __result = memcmp (__str + __str_len<br> - __suffix_len, ((__suffix) + !(__suffix)), __suffix_len) ==<br> 0; } __result; }) : (g_str_has_suffix) (name, ".mo") )</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> has_translations = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> } <span class='keyword'>while</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> g_dir_close (dir);</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='comment'>* mate_language_has_translations:</span></td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='comment'>* Returns %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='comment'>* Return value: %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line">mate_language_has_translations (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> gchar *path;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>if</span> (!has_translations) {</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='keyword'>int</span> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='keyword'>while</span> ((system_data_dirs[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (has_translations == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> path = g_build_filename (system_data_dirs[i], <span class='string_literal'>"locale"</span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">add_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> gboolean utf8_only)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> MateLocale *old_locale;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> gboolean is_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> gboolean valid = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='macro'>g_return_val_if_fail (language_name != NULL, FALSE)<span class='macro_popup'>do { if ((language_name != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "language_name != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>g_return_val_if_fail (*language_name != '\0', FALSE)<span class='macro_popup'>do { if ((*language_name != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*language_name != '\\0'"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> language_name_get_codeset_details (language_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>if</span> (is_utf8) {</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='keyword'>if</span> (strchr (language_name, '.'))</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* If the locale name has no dot, assume that its</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* encoding part is missing and try again after adding</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* ".UTF-8". This catches locale names like "de_DE".</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s.UTF-8"</span>, language_name);</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> language_name_get_codeset_details (name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='keyword'>if</span> (!is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='keyword'>if</span> (!language_name_is_valid (name)) {</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it's invalid"</span>, name);</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> locale = <span class='macro'>g_new0 (MateLocale, 1)<span class='macro_popup'>((MateLocale *) g_malloc0_n ((1), sizeof (MateLocale)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> valid = mate_parse_locale (name,</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> &amp;locale-&gt;language_code,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> &amp;locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> &amp;locale-&gt;codeset,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> &amp;locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> <span class='keyword'>if</span> (!valid) {</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> locale-&gt;id = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> locale-&gt;name = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> locale-&gt;codeset, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='keyword'>if</span> (!mate_language_has_translations (locale-&gt;name) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> !mate_language_has_translations (locale-&gt;id) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> !mate_language_has_translations (locale-&gt;language_code) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it lacks translations"</span>, locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>if</span> (!utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> locale-&gt;id = <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> old_locale = g_hash_table_lookup (mate_available_locales_map, locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='keyword'>if</span> (old_locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> <span class='keyword'>if</span> (strlen (old_locale-&gt;name) &gt; strlen (locale-&gt;name)) {</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> g_hash_table_insert (mate_available_locales_map, <span class='macro'>g_strdup (locale-&gt;id)<span class='macro_popup'>g_strdup_inline (locale-&gt;id)</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line">select_dirs (<span class='keyword'>const</span> <span class='keyword'>struct</span> dirent *dirent)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>int</span> result = 0;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>if</span> (strcmp (dirent-&gt;d_name, <span class='string_literal'>"."</span>) != 0 &amp;&amp; strcmp (dirent-&gt;d_name, <span class='string_literal'>".."</span>) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> mode_t mode = 0;</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"><span class='directive'>#ifdef _DIRENT_HAVE_D_TYPE</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='keyword'>if</span> (dirent-&gt;d_type != <span class='macro'>DT_UNKNOWN<span class='macro_popup'>DT_UNKNOWN</span></span> &amp;&amp; dirent-&gt;d_type != <span class='macro'>DT_LNK<span class='macro_popup'>DT_LNK</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> mode = <span class='macro'>DTTOIF (dirent-&gt;d_type)<span class='macro_popup'>((dirent-&gt;d_type) &lt;&lt; 12)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> } <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>struct</span> stat st;</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, dirent-&gt;d_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_stat<span class='macro_popup'>stat</span></span> (path, &amp;st) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> mode = st.st_mode;</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> result = <span class='macro'>S_ISDIR (mode)<span class='macro_popup'>((((mode)) &amp; 0170000) == (0040000))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line">collect_locales_from_directory (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='keyword'>struct</span> dirent **dirents;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>int</span> ndirents;</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>int</span> cnt;</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> ndirents = scandir (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, &amp;dirents, select_dirs, alphasort);</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='keyword'>for</span> (cnt = 0; cnt &lt; ndirents; ++cnt) {</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>if</span> (add_locale (dirents[cnt]-&gt;d_name, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>if</span> (ndirents &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> free (dirents);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">collect_locales_from_localebin (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> <span class='keyword'>const</span> gchar *argv[] = { <span class='string_literal'>"locale"</span>, <span class='string_literal'>"-a"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> gchar **linep;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>g_auto (GStrv)<span class='macro_popup'>__attribute__((cleanup(glib_auto_cleanup_GStrv))) GStrv</span></span> lines = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> gchar *output = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>if</span> (g_spawn_sync (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, (gchar **) argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> G_SPAWN_SEARCH_PATH|G_SPAWN_STDERR_TO_DEV_NULL,</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;output, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='macro'>g_return_val_if_fail (output != NULL, FALSE)<span class='macro_popup'>do { if ((output != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "output != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> lines = g_strsplit (output, <span class='string_literal'>"\n"</span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='keyword'>if</span> (lines) {</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> linep = lines;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>while</span> (*linep) {</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>if</span> (*linep[0] &amp;&amp; add_locale (*linep, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> linep++;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">fill_count_map (GHashTable *count_map,</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>int</span> count;</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>if</span> (code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (count_map, code)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> + 1;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> count = 1;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> g_hash_table_insert (count_map, <span class='macro'>g_strdup (code)<span class='macro_popup'>g_strdup_inline (code)</span></span>, <span class='macro'>GINT_TO_POINTER (count)<span class='macro_popup'>((gpointer) (glong) (count))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line">count_languages_and_territories (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> gpointer value;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> mate_language_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> mate_territory_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> MateLocale *locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> fill_count_map (mate_language_count_map, locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> fill_count_map (mate_territory_count_map, locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">collect_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> gboolean found_localebin_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> gboolean found_dir_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> mate_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) mate_locale_free);</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> found_localebin_locales = collect_locales_from_localebin ();</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> found_dir_locales = collect_locales_from_directory ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>if</span> (!(found_localebin_locales || found_dir_locales)) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_warning (<span class='string_literal'>"Could not read list of available locales from libc, "</span></td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='string_literal'>"guessing possible locales from available translations, "</span></td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='string_literal'>"but list may be incomplete!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> count_languages_and_territories ();</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">get_language_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (mate_language_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_language_count_map, language)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line">is_unique_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> <span class='keyword'>return</span> get_language_count (language) == 1;</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line">get_territory_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='keyword'>if</span> (mate_territory_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_territory_count_map, territory)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line">is_unique_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> <span class='keyword'>return</span> get_territory_count (territory) == 1;</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line">is_fallback_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *fallback_language_names[] = { <span class='string_literal'>"C"</span>, <span class='string_literal'>"POSIX"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> <span class='keyword'>for</span> (i = 0; fallback_language_names[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>if</span> (strcmp (code, fallback_language_names[i]) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line">get_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 679, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Unspecified"</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_languages_map, code);</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">get_first_item_in_semicolon_list (<span class='keyword'>const</span> <span class='keyword'>char</span> *list)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='keyword'>char</span> **items;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>char</span> *item;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>/* Some entries in iso codes have multiple values, separated</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='comment'>* by semicolons. Not really sure which one to pick, so</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='comment'>* we just arbitrarily pick the first one.</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> items = g_strsplit (list, <span class='string_literal'>"; "</span>, 2);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> item = <span class='macro'>g_strdup (items[0])<span class='macro_popup'>g_strdup_inline (items[0])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> g_strfreev (items);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line">capitalize_utf8_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *str)</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>char</span> first[8] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (!str)</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first);</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> g_strconcat (first, g_utf8_offset_to_pointer (str, 1), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">get_translated_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language;</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> language = get_language (code);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>if</span> (language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_name;</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"Unspecified"</span>))<span class='macro_popup'>g_strdup_inline (gettext ("Unspecified"))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> translated_name = dgettext (<span class='string_literal'>"iso_639"</span>, language);</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_name);</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line">get_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 768, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_territories_map, code);</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">get_translated_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> territory = get_territory (code);</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='keyword'>if</span> (territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_territory;</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> translated_territory = dgettext (<span class='string_literal'>"iso_3166"</span>, territory);</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line">languages_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longB;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longT;</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_id;</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *lang_name;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>if</span> (! (<span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_entry"<br>)) == 0)</span></span> || <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_3_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_3_entry"<br>)) == 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> ccode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> ccode_longB = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> ccode_longT = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> ccode_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> lang_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_1_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_1_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> ccode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2B_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2B_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> ccode_longB = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2T_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2T_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> ccode_longT = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"id"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("id"))<br> == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> ccode_id = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> lang_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='keyword'>if</span> (lang_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='keyword'>if</span> (ccode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> <span class='macro'>g_strdup (ccode)<span class='macro_popup'>g_strdup_inline (ccode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (ccode_longB != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='macro'>g_strdup (ccode_longB)<span class='macro_popup'>g_strdup_inline (ccode_longB)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>if</span> (ccode_longT != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='macro'>g_strdup (ccode_longT)<span class='macro_popup'>g_strdup_inline (ccode_longT)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='keyword'>if</span> (ccode_id != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='macro'>g_strdup (ccode_id)<span class='macro_popup'>g_strdup_inline (ccode_id)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">territories_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_2;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_3;</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ncode;</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_name;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (! <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_3166_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_3166_entry"<br>)) == 0)</span></span> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> acode_2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> acode_3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> ncode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> territory_common_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> territory_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_2_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_2_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> acode_2 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_3_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_3_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> acode_3 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"numeric_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("numeric_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> ncode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"common_name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("common_name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> territory_common_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> territory_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> <span class='keyword'>if</span> (territory_common_name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> territory_name = territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>if</span> (territory_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> <span class='keyword'>if</span> (acode_2 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> <span class='macro'>g_strdup (acode_2)<span class='macro_popup'>g_strdup_inline (acode_2)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> <span class='keyword'>if</span> (acode_3 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> <span class='macro'>g_strdup (acode_3)<span class='macro_popup'>g_strdup_inline (acode_3)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> <span class='keyword'>if</span> (ncode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> <span class='macro'>g_strdup (ncode)<span class='macro_popup'>g_strdup_inline (ncode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line">languages_variant_init (<span class='keyword'>const</span> <span class='keyword'>char</span> *variant)</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> bindtextdomain (variant, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> bind_textdomain_codeset (variant, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filename = g_strdup_printf (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/%s.xml"</span>, variant);</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> res = g_file_get_contents (filename,</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> GMarkupParser parser = { languages_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line">languages_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='keyword'>if</span> (mate_languages_map)</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> mate_languages_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639_3"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line">territories_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='keyword'>if</span> (mate_territories_map)</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> bindtextdomain (<span class='string_literal'>"iso_3166"</span>, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> bind_textdomain_codeset (<span class='string_literal'>"iso_3166"</span>, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> mate_territories_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> res = g_file_get_contents (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> GMarkupParser parser = { territories_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>* mate_get_language_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>* Gets the language description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line">mate_get_language_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> GString *full_language;</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> full_language = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> <span class='keyword'>if</span> (language_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> <span class='keyword'>if</span> (translated_language == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> full_language = <span class='macro'>g_string_append (full_language, translated_language)<span class='macro_popup'>(__builtin_constant_p (translated_language) ? __extension__ (<br>{ const char * const __val = (translated_language); g_string_append_len_inline<br> (full_language, __val, (__val != ((void*)0)) ? (gssize) strlen<br> (((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_language, translated_language, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> <span class='keyword'>if</span> (is_unique_language (language_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> <span class='keyword'>if</span> (territory_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> <span class='keyword'>if</span> (translated_territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> language_name_get_codeset_details (locale, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>if</span> (full_language-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class="mrange"><span class='macro'>g_string_free</span> (full_language, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_language), ((!(0)))) : g_string_free_and_steal (full_language<br>)) : (g_string_free) ((full_language), ((!(0)))))</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:17ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_language, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_language<br>), ((0))) : g_string_free_and_steal (full_language)) : (g_string_free<br>) ((full_language), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='comment'>* mate_get_country_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='comment'>* Gets the country description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line">mate_get_country_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> GString *full_name;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> full_name = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='keyword'>if</span> (territory_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='macro'>g_string_append (full_name, translated_territory)<span class='macro_popup'>(__builtin_constant_p (translated_territory) ? __extension__ (<br>{ const char * const __val = (translated_territory); g_string_append_len_inline<br> (full_name, __val, (__val != ((void*)0)) ? (gssize) strlen (<br>((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_name, translated_territory, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (is_unique_territory (territory_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='keyword'>if</span> (language_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>if</span> (translated_language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> translated_language);</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> language_name_get_codeset_details (translation, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>if</span> (full_name-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='macro'>g_string_free (full_name, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_name), ((!(0)))) : g_string_free_and_steal (full_name))<br> : (g_string_free) ((full_name), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_name, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_name<br>), ((0))) : g_string_free_and_steal (full_name)) : (g_string_free<br>) ((full_name), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='comment'>* mate_get_all_locales:</span></td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> <span class='comment'>* Gets all locales.</span></td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='comment'>* Return value: (array zero-terminated=1) (element-type utf8) (transfer full):</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='comment'>* a newly allocated %NULL-terminated string array containing the</span></td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='comment'>* all locales. Free with g_strfreev().</span></td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">mate_get_all_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> gpointer key, value;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> GPtrArray *array;</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> array = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, &amp;key, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> g_ptr_array_add (array, <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> g_ptr_array_add (array, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> <span class='keyword'>return</span> (<span class='keyword'>char</span> **) g_ptr_array_free (array, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> <span class='comment'>* mate_get_language_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='comment'>* Gets the language name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line">mate_get_language_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> get_translated_language (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='comment'>* mate_get_country_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='comment'>* @code: an ISO 3166 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> <span class='comment'>* Gets the country name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line">mate_get_country_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> <span class='keyword'>return</span> get_translated_territory (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-689d47.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-689d47.html
new file mode 100644
index 0000000..940b97c
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-689d47.html
@@ -0,0 +1,4660 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-item.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-desktop-item.c -->
+
+<!-- FILENAME mate-desktop-item.c -->
+
+<!-- FUNCTIONNAME escape_string_and_dup -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 689d477c3d2812a06a47e290cea1872b -->
+
+<!-- BUGLINE 3125 -->
+
+<!-- BUGCOLUMN 9 -->
+
+<!-- BUGPATHLENGTH 27 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-desktop-item.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 3125, column 9</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-item.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-item.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"811": 1, "812": 1, "813": 1, "814": 1, "815": 1, "816": 1, "817": 1, "819": 1, "824": 1, "827": 1, "829": 1, "837": 1, "3099": 1, "3100": 1, "3101": 1, "3102": 1, "3103": 1, "3104": 1, "3106": 1, "3109": 1, "3110": 1, "3111": 1, "3112": 1, "3114": 1, "3115": 1, "3116": 1, "3117": 1, "3118": 1, "3123": 1, "3124": 1, "3125": 1, "3131": 1, "3132": 1, "3133": 1, "3134": 1, "3138": 1, "3816": 1, "3817": 1, "3818": 1, "3819": 1, "3820": 1, "3821": 1, "3823": 1, "3824": 1, "3825": 1, "3826": 1, "3829": 1, "3830": 1, "3831": 1, "3832": 1, "3833": 1, "3834": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 61,59,55,50,49,46,44,41,39,36,34,33,28,25,23,22,19,17,16,12,8,5,5,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; c-set-style: linux indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/* mate-desktop-item.c - MATE Desktop File Representation</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>Copyright (C) 1999, 2000 Red Hat Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>Copyright (C) 2001 Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>All rights reserved.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>This file is part of the Mate Library.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>Developed by Elliot Lee &lt;[email protected]&gt; and Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>The Mate Library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>The Mate Library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>License along with the Mate Library; see the file COPYING.LIB. If not,</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>Boston, MA 02110-1301, USA. */</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>@NOTATION@</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;limits.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;ctype.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define SN_API_NOT_YET_FROZEN</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;libsn/sn.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#undef MATE_DISABLE_DEPRECATED</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include &lt;mate-desktop-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _MateDesktopItem {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>int</span> refcount;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='comment'>/* all languages used */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList *languages;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> MateDesktopItemType type;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>/* `modified' means that the ditem has been</span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>* modified since the last save. */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gboolean modified;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Keys of the main section only */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GList *sections;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* This includes ALL keys, including</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>* other sections, separated by '/' */</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GHashTable *main_hash;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>char</span> *location;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='comment'>/* If mtime is set to this, set_location won't update mtime,</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='comment'>* this is to be used internally only. */</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='directive'>#define <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span> ((gint64)-2)</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">} Section;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> ENCODING_UNKNOWN,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> ENCODING_UTF8,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> ENCODING_LEGACY_MIXED</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">} Encoding;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* IO reading utils, that look like the libc buffered io stuff</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='directive'>#define <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span> (32 * 1024)</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>char</span> *buf;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> gboolean buf_needs_free;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gboolean past_first_read;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gboolean eof;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> guint64 size;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">} ReadBuf;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> gboolean ditem_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_desktop_item_set_location_gfile (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> GFile *file);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">readbuf_getc (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;eof)</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> rb-&gt;pos == rb-&gt;size) {</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> gssize bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> bytes_read = 0;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> bytes_read = g_input_stream_read (<span class='macro'>G_INPUT_STREAM (rb-&gt;stream)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_input_stream_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> rb-&gt;buf,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='comment'>/* FIXME: handle errors other than EOF */</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (bytes_read &lt;= 0) {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> rb-&gt;eof = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size != 0)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> rb-&gt;past_first_read = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> rb-&gt;size = bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> (guchar) rb-&gt;buf[rb-&gt;pos++];</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='comment'>/* Note, does not include the trailing \n */</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">readbuf_gets (<span class='keyword'>char</span> *buf, gsize bufsize, ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='macro'>g_return_val_if_fail (buf != NULL, NULL)<span class='macro_popup'>do { if ((buf != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "buf != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>g_return_val_if_fail (rb != NULL, NULL)<span class='macro_popup'>do { if ((rb != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rb != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> buf[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> c = readbuf_getc (rb);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> || c == '\n')</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> buf[pos++] = c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> } <span class='keyword'>while</span> (pos &lt; bufsize-1);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; pos == 0)</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> buf[pos++] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='keyword'>return</span> buf;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">readbuf_open (GFile *file, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> stream = g_file_read (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error reading file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error reading file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> rb-&gt;stream = stream;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> rb-&gt;file = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> rb-&gt;uri = uri;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> rb-&gt;buf = g_malloc (<span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> rb-&gt;buf_needs_free = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='comment'>/* rb-&gt;size = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">readbuf_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri, <span class='keyword'>const</span> <span class='keyword'>char</span> *string, gssize length)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= 0, NULL)<span class='macro_popup'>do { if ((length &gt;= 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>/* rb-&gt;file = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* rb-&gt;stream = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> rb-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> rb-&gt;buf = (<span class='keyword'>char</span> *) string;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>/* rb-&gt;buf_needs_free = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> rb-&gt;size = length;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">readbuf_rewind (ReadBuf *rb, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> rb-&gt;eof = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (!rb-&gt;past_first_read)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> rb-&gt;size = 0;</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (g_seekable_seek (<span class='macro'>G_SEEKABLE (rb-&gt;stream)<span class='macro_popup'>((((GSeekable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_seekable_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> 0, G_SEEK_SET, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> rb-&gt;stream = g_file_read (rb-&gt;file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> g_set_error (</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> error, <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error rewinding file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error rewinding file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> rb-&gt;uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line">readbuf_close (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_object_unref (rb-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g_free (rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;buf_needs_free)</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (rb-&gt;buf);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> g_free (rb);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">type_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *type)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>switch</span> (type [0]) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>case</span> 'A':</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Application"</span>))</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>case</span> 'L':</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Link"</span>))</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_LINK;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"FSDevice"</span>))</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> 'M':</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"MimeType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Directory"</span>))</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> 'S':</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Service"</span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"ServiceType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_OTHER;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* mate_desktop_item_new:</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='comment'>* Creates a MateDesktopItem object. The reference count on the returned value is set to '1'.</span></td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* Returns: The new MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">mate_desktop_item_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> retval = <span class='macro'>g_new0 (MateDesktopItem, 1)<span class='macro_popup'>((MateDesktopItem *) g_malloc0_n ((1), sizeof (MateDesktopItem<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> retval-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* These are guaranteed to be set */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned</span></td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>* here is the name of an application or</span></td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>* a document */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No name"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No name"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='string_literal'>"1.0"</span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> retval-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">dup_section (Section *sec)</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> Section *retval = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> retval-&gt;name = <span class='macro'>g_strdup (sec-&gt;name)<span class='macro_popup'>g_strdup_inline (sec-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> retval-&gt;keys = g_list_copy (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">copy_string_hash (gpointer key, gpointer value, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GHashTable *copy = user_data;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> g_hash_table_replace (copy,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>* mate_desktop_item_copy:</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='comment'>* @item: The item to be copied</span></td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* Creates a copy of a MateDesktopItem. The new copy has a refcount of 1.</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* Note: Section stack is NOT copied.</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='comment'>* Returns: The new copy</span></td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">mate_desktop_item_copy (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> retval = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> retval-&gt;type = item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> retval-&gt;modified = item-&gt;modified;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> retval-&gt;location = <span class='macro'>g_strdup (item-&gt;location)<span class='macro_popup'>g_strdup_inline (item-&gt;location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> retval-&gt;mtime = item-&gt;mtime;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> retval-&gt;launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='comment'>/* Languages */</span></td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> retval-&gt;languages = g_list_copy (item-&gt;languages);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='comment'>/* Keys */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> retval-&gt;keys = g_list_copy (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>/* Sections */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> retval-&gt;sections = g_list_copy (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> li-&gt;data = dup_section (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> g_hash_table_foreach (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> copy_string_hash,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> retval-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line">read_sort_order (MateDesktopItem *item, GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>char</span> buf[<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".order"</span>);</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> rb = readbuf_open (child, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>if</span> (str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> str = g_string_new (buf);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>g_string_append (str, buf)<span class='macro_popup'>(__builtin_constant_p (buf) ? __extension__ ({ const char * const<br> __val = (buf); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, buf, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='macro'>g_string_append_c (str, ';')<span class='macro_popup'>g_string_append_c_inline (str, ';')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> mate_desktop_item_set_string (item, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>g_string_free (str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free<br>) ((str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line">make_fake_directory (GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> mate_desktop_item_set_entry_type (item,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> MATE_DESKTOP_ITEM_TYPE_DIRECTORY);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> item-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>; <span class='comment'>/* it doesn't exist, we know that */</span></td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> mate_desktop_item_set_location_gfile (item, child);</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> read_sort_order (item, dir);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_file:</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>* @file: The filename or directory path to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>* This function loads 'file' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">mate_desktop_item_new_from_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *file,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> retval = mate_desktop_item_new_from_gfile (gfile, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* @uri: URI to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* This function loads 'uri' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">mate_desktop_item_new_from_uri (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((uri != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> retval = mate_desktop_item_new_from_gfile (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line">mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> GFile *subfn;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> GFile *parent;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gint64 mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span><span class='string_literal'>","</span><span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp; type != G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_INVALID_TYPE,</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"File '%s' is not a regular file or directory."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "File '%s' is not a regular file or directory."<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> uri);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> GFileInfo *child_info;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> child = g_file_get_child (file, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> child_info = g_file_query_info (child,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>if</span> (child_info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> make_fake_directory (file);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (child_info,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_object_unref (child_info);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> subfn = child;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> subfn = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> rb = readbuf_open (subfn, error);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> ! mate_desktop_item_exists (retval)) {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> mate_desktop_item_unref (retval);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> retval-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> mate_desktop_item_set_location_gfile (retval, subfn);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> retval-&gt;mtime = mtime;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> parent = g_file_get_parent (file);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (parent != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> read_sort_order (retval, parent);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* @string: string to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>* @length: length of string, or -1 to use strlen</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* @error: place to put errors</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='comment'>* This function turns the contents of the string into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">mate_desktop_item_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> gssize length,</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= -1, NULL)<span class='macro_popup'>do { if ((length &gt;= -1)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= -1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (length == -1) {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> length = strlen (string);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> rb = readbuf_new_from_string (uri, string, length);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>/* FIXME: Sort order? */</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">lookup_desktop_file_in_data_dir (<span class='keyword'>const</span> <span class='keyword'>char</span> *desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> path = g_build_filename (data_dir, <span class='string_literal'>"applications"</span>, desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (path, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">file_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *user_data_dir;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>char</span> *retval;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> user_data_dir = g_get_user_data_dir ();</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, user_data_dir))) {</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>for</span> (i = 0; system_data_dirs[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, system_data_dirs[i]))) {</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_basename:</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='comment'>* @basename: The basename of the MateDesktopItem to load.</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='comment'>* This function loads 'basename' from a system data directory and</span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='comment'>* returns its MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">mate_desktop_item_new_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> <span class='keyword'>char</span> *file;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='macro'>g_return_val_if_fail (basename != NULL, NULL)<span class='macro_popup'>do { if ((basename != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "basename != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!(file = file_from_basename (basename))) {</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Cannot find file '%s'"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Cannot find file '%s'"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> basename);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> retval = mate_desktop_item_new_from_file (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> g_free (file);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>* mate_desktop_item_save:</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='comment'>* @under: A new uri (location) for this #MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='comment'>* @force: Save even if it wasn't modified</span></td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='comment'>* @error: #GError return</span></td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='comment'>* Writes the specified item to disk. If the 'under' is NULL, the original</span></td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='comment'>* location is used. It sets the location of this entry to point to the</span></td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>* new location.</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>* Returns: boolean. %TRUE if the file was saved, %FALSE otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">mate_desktop_item_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *under,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> gboolean force,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span id="start60"><span class='keyword'>const</span></span> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span id="start59"><span id="end60"><span class='keyword'>if</span></span></span> (<span id="start58"><span class="mrange"><span id="end59">under</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'under' is not equal to NULL</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> ! force &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> ! item-&gt;modified)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span id="start57"><span id="end58"><span class='keyword'>if</span></span></span> (<span id="start56"><span id="end57"><span class='variable'>under<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>1.1</div></td><td>'under' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> uri = item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span id="start53"><span id="end54"><span id="start55"><span id="end56">uri</span></span></span></span> = <span id="start54"><span id="end55">under</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span id="start52"><span id="end53"><span class='keyword'>if</span></span></span> (<span id="start51"><span id="end52"><span class='variable'>uri<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>2.1</div></td><td>'uri' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_FILENAME,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No filename to save to"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No filename to save to"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span id="start50"><span id="end51"><span class='keyword'>if</span></span></span> ( ! <span class="mrange"><span id="end49">ditem_save</span> (<span id="start49"><span id="end50">item</span></span>, uri, error)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'ditem_save'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> item-&gt;mtime = g_get_real_time () / <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>* mate_desktop_item_ref:</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='comment'>* Description: Increases the reference count of the specified item.</span></td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='comment'>* Returns: the newly referenced @item</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line">mate_desktop_item_ref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line">free_section (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> Section *section = data;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_free (section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> section-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_list_free_full (section-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> g_free (section);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='comment'>* mate_desktop_item_unref:</span></td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='comment'>* Decreases the reference count of the specified item, and destroys the item if there are no more references left.</span></td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">mate_desktop_item_unref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> item-&gt;refcount--;</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>if</span>(item-&gt;refcount != 0)</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_list_free_full (item-&gt;languages, g_free);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> item-&gt;languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> g_list_free_full (item-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> g_list_free_full (item-&gt;sections, (GDestroyNotify) free_section);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> item-&gt;sections = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> g_hash_table_destroy (item-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> item-&gt;main_hash = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> item-&gt;location = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_free (item);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line">find_section (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (strcmp (section, <span class='string_literal'>"Desktop Entry"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> sec = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>if</span> (strcmp (sec-&gt;name, section) == 0)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> sec = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> sec-&gt;name = <span class='macro'>g_strdup (section)<span class='macro_popup'>g_strdup_inline (section)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> item-&gt;sections = g_list_append (item-&gt;sections, sec);</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='comment'>/* Don't mark the item modified, this is just an empty section,</span></td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='comment'>* it won't be saved even */</span></td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line">section_from_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (key == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> p = strchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> name = g_strndup (key, p - key);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> sec = find_section (item, name);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line">key_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>char</span> *p = strrchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='keyword'>return</span> p+1;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span> key;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">lookup (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line">lookup_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='keyword'>return</span> lookup (item, key);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> ret = lookup (item, full);</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">lookup_best_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> ret = lookup_locale (item, key, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>if</span> (ret != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line">set (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> Section *sec = section_from_key (item, key);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (sec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> sec-&gt;keys = g_list_append</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> (sec-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>g_strdup (key_basename (key))<span class='macro_popup'>g_strdup_inline (key_basename (key))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (sec-&gt;keys, key_basename (key),</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> sec-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> g_list_delete_link (sec-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> item-&gt;keys = g_list_append (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> (item-&gt;keys, key, (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> item-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> g_list_delete_link (item-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line">set_locale (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> set (item, key, value);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> set (item, full, value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='comment'>/* add the locale to the list of languages if it wasn't there</span></td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* before */</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> item-&gt;languages = g_list_prepend (item-&gt;languages,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>g_strdup (locale)<span class='macro_popup'>g_strdup_inline (locale)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">list_to_vector (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='keyword'>int</span> len = g_slist_length (list);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> argv = <span class='macro'>g_new0 (<span class='keyword'>char</span> *, len+1)<span class='macro_popup'>((char * *) g_malloc0_n ((len+1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>for</span> (i = 0, li = list;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> li = li-&gt;next, i++) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> argv[i] = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> argv[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>return</span> argv;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">make_args (GList *files)</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> GSList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class='keyword'>for</span> (li = files; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *file = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> gfile = g_file_new_for_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> list = g_slist_prepend (list, gfile);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>return</span> g_slist_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line">free_args (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>for</span> (li = list; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_unref (<span class='macro'>G_FILE (li-&gt;data)<span class='macro_popup'>((((GFile*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((li-&gt;data)), ((g_file_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">escape_single_quotes (<span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> gboolean in_double_quotes)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GString *gs;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *pre = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *post = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; ! in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> pre = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> post = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> pre = <span class='string_literal'>"\"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> post = <span class='string_literal'>"'\""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (strchr (s, '\'') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='keyword'>return</span> g_strconcat (pre, s, post, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gs = g_string_new (pre);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (*p == '\'')</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>g_string_append (gs, <span class='string_literal'>"'\\''"</span>)<span class='macro_popup'>(__builtin_constant_p ("'\\''") ? __extension__ ({ const char<br> * const __val = ("'\\''"); g_string_append_len_inline (gs, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (gs, "'\\''"<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='macro'>g_string_append (gs, post)<span class='macro_popup'>(__builtin_constant_p (post) ? __extension__ ({ const char * const<br> __val = (post); g_string_append_len_inline (gs, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (gs, post, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> URI_TO_LOCAL_BASENAME</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">} ConversionType;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line">convert_uri (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> ConversionType conversion)</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>switch</span> (conversion) {</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>case</span> URI_TO_STRING:</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> retval = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_PATH:</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> retval = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_DIRNAME:</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='keyword'>char</span> *local_path;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> local_path = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> retval = g_path_get_dirname (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_BASENAME:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> retval = g_file_get_basename (file);</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-desktop-item.c"<br>, 1203, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> ADDED_NONE = 0,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> ADDED_SINGLE,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> ADDED_ALL</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line">} AddedStatus;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line">append_all_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='keyword'>for</span> (l = args; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>char</span> *converted;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (!(converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>" "</span>)<span class='macro_popup'>(__builtin_constant_p (" ") ? __extension__ ({ const char * const<br> __val = (" "); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, " ", (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> escaped = escape_single_quotes (converted,</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>return</span> ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">append_first_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>char</span> *converted = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>for</span> (l = *arg_ptr; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>if</span> ((converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> *arg_ptr = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (!converted)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>return</span> added_status;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> escaped = escape_single_quotes (converted, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> added_status != ADDED_ALL ? ADDED_SINGLE : added_status;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">do_percent_subst (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *arg,</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> <span class='keyword'>char</span> *esc;</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cs;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>if</span> (arg[0] != '%' || arg[1] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='keyword'>switch</span> (arg[1]) {</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='keyword'>case</span> '%':</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>case</span> 'U':</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>case</span> 'N':</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> <span class='keyword'>case</span> 'f':</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> 'u':</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>case</span> 'd':</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>case</span> 'm':</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says this is deprecated</span></td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> <span class='comment'>* and replace with --miniicon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_MINI_ICON<span class='macro_popup'>"MiniIcon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--miniicon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--miniicon=") ? __extension__ ({ const<br> char * const __val = ("--miniicon="); g_string_append_len_inline<br> (str, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "--miniicon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>case</span> 'i':</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says replace with --icon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--icon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--icon=") ? __extension__ ({ const char<br> * const __val = ("--icon="); g_string_append_len_inline (str<br>, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !<br>(__val))) : (gssize) -1); }) : g_string_append_len_inline (str<br>, "--icon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='keyword'>case</span> 'c':</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>case</span> 'k':</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> esc = escape_single_quotes (item-&gt;location, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>case</span> 'v':</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_DEV<span class='macro_popup'>"Dev"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='comment'>/* Maintain special characters - e.g. "%20" */</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_ascii_isdigit (arg [1])<span class='macro_popup'>((g_ascii_table[(guchar) (arg [1])] &amp; G_ASCII_DIGIT) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line">expand_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> gboolean escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> gboolean single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> gboolean double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> GString *gs = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (escape) {</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\\') {</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot)</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> escape = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\'') {</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> single_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (single_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '"') {</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> double_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '%') {</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='keyword'>if</span> (do_percent_subst (item, p, gs,</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> single_quot, double_quot,</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> args, arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> added_status)) {</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"><span class='comment'>/*Functions in this code block should only ever be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line">sn_error_trap_push (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line">sn_error_trap_pop (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line">make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>int</span> i, j;</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>int</span> desktop_startup_id_len;</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, i + 2)<span class='macro_popup'>((char * *) g_malloc_n ((i + 2), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> desktop_startup_id_len = strlen (<span class='string_literal'>"DESKTOP_STARTUP_ID"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='keyword'>for</span> (i = 0, j = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp[i], <span class='string_literal'>"DESKTOP_STARTUP_ID"</span>, desktop_startup_id_len) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> retval[j] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> retval[j] = g_strdup_printf (<span class='string_literal'>"DESKTOP_STARTUP_ID=%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> sn_launcher_context_get_startup_id (sn_context));</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> retval[j] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"><span class='comment'>/* This should be fairly long, as it's confusing to users if a startup</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='comment'>* ends when it shouldn't (it appears that the startup failed, and</span></td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='comment'>* they have to relaunch the app). Also the timeout only matters when</span></td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> <span class='comment'>* there are bugs and apps don't end their own startup sequence.</span></td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>* This timeout is a "last resort" timeout that ignores whether the</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* startup sequence has shown activity or not. Marco and the</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>* tasklist have smarter, and correspondingly able-to-be-shorter</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='comment'>* timeouts. The reason our timeout is dumb is that we don't monitor</span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='comment'>* the sequence (don't use an SnMonitorContext)</span></td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> 30 /* seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span> (<span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> * 1000)</span></td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> GSList *contexts;</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> guint timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line">} StartupTimeoutData;</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">free_startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> g_slist_free_full (std-&gt;contexts, (GDestroyNotify) sn_launcher_context_unref);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (std-&gt;timeout_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_source_remove (std-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> g_free (std);</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line">startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GSList *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> <span class='keyword'>int</span> min_timeout;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> min_timeout = <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> gint64 now = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> GTimeVal now;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> g_get_current_time (&amp;now);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> tmp = std-&gt;contexts;</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>while</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> SnLauncherContext *sn_context = tmp-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> GSList *next = tmp-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> time_t tv_sec;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> suseconds_t tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context, &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> tv = (tv_sec * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>) + tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> elapsed = (<span class='keyword'>double</span>) (now - tv) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>long</span> tv_sec, tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> elapsed =</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> ((((<span class='keyword'>double</span>)now.tv_sec - tv_sec) * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span> +</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> (now.tv_usec - tv_usec))) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (elapsed &gt;= <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> std-&gt;contexts = g_slist_remove (std-&gt;contexts,</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> sn_launcher_context_complete (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> min_timeout = <span class='macro'>MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed))<span class='macro_popup'>(((min_timeout) &lt; (((30 * 1000) - elapsed))) ? (min_timeout<br>) : (((30 * 1000) - elapsed)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> tmp = next;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='comment'>/* we'll use seconds for the timeout */</span></td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> <span class='keyword'>if</span> (min_timeout &lt; 1000)</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> min_timeout = 1000;</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> <span class='keyword'>if</span> (std-&gt;contexts == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> std-&gt;timeout_id = g_timeout_add_seconds (min_timeout / 1000,</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> std);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>/* always remove this one, but we may have reinstalled another one. */</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line">add_startup_timeout (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> SnLauncherContext *sn_context)</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> StartupTimeoutData *data;</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> data = g_object_get_data (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> data = <span class='macro'>g_new (StartupTimeoutData, 1)<span class='macro_popup'>((StartupTimeoutData *) g_malloc_n ((1), sizeof (StartupTimeoutData<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> data-&gt;screen = screen;</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> data-&gt;contexts = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> data-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> data, free_startup_timeout);</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> sn_launcher_context_ref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> data-&gt;contexts = g_slist_prepend (data-&gt;contexts, sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> <span class='keyword'>if</span> (data-&gt;timeout_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> data-&gt;timeout_id = g_timeout_add_seconds (</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION - functions should only be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">stringify_uris (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> append_all_converted (str, URI_TO_STRING, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line">stringify_files (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> append_all_converted (str, URI_TO_LOCAL_PATH, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line">make_environment_for_screen (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>char</span> *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='keyword'>int</span> display_index = -1;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> <span class='keyword'>int</span> i, env_len;</td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> <span class='macro'>g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((screen)); GType __t = ((gdk_screen_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "GDK_IS_SCREEN (screen)"); return (((void*)0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp [i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> <span class='keyword'>for</span> (env_len = 0; envp [env_len]; env_len++)</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp [env_len], <span class='string_literal'>"DISPLAY"</span>, strlen (<span class='string_literal'>"DISPLAY"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> display_index = env_len;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, env_len + 1)<span class='macro_popup'>((char * *) g_malloc_n ((env_len + 1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> retval [env_len] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> display_name = <span class='macro'>g_strdup (gdk_display_get_name (display))<span class='macro_popup'>g_strdup_inline (gdk_display_get_name (display))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; env_len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (i == display_index)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> retval [i] = g_strconcat (<span class='string_literal'>"DISPLAY="</span>, display_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> retval [i] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='macro'>g_assert (i == env_len)<span class='macro_popup'>do { if (i == env_len) ; else g_assertion_message_expr ("MateDesktop"<br>, "mate-desktop-item.c", 1728, ((const char*) (__func__)), "i == env_len"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> g_free (display_name);</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line">dummy_child_watch (GPid pid,</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> gint status,</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='comment'>/* Nothing, this is just to ensure we don't double fork</span></td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='comment'>* and break pkexec:</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=675789</span></td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">ditem_execute (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec,</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> gboolean launch_only_one,</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> gboolean use_current_dir,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> gboolean append_uris,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gboolean append_paths,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> gboolean do_not_reap_child,</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span class='keyword'>char</span> **free_me = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> <span class='keyword'>char</span> **real_argv;</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>int</span> i, ret;</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='keyword'>char</span> **term_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='keyword'>int</span> term_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> GSList *vector_list;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> GSList *args, *arg_ptr;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> AddedStatus added_status;</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>char</span> **temp_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='keyword'>int</span> temp_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='keyword'>char</span> *new_exec, *uris, *temp;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='keyword'>char</span> *exec_locale;</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='keyword'>int</span> launched = 0;</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> GPid pid;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> SnLauncherContext *sn_context;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> SnDisplay *sn_display;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *startup_class;</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> <span class='macro'>g_return_val_if_fail (item, -1)<span class='macro_popup'>do { if ((item)) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "item"); return (-1); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> working_dir = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_PATH<span class='macro_popup'>"Path"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='keyword'>if</span> (working_dir &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> !g_file_test (working_dir, G_FILE_TEST_IS_DIR))</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span class='keyword'>if</span> (working_dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !use_current_dir)</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> working_dir = g_get_home_dir ();</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span class='keyword'>if</span> (mate_desktop_item_get_boolean (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *options =</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL_OPTIONS<span class='macro_popup'>"TerminalOptions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> <span class='keyword'>if</span> (options != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_shell_parse_argv (options,</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> &amp;term_argc,</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> &amp;term_argv,</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> <span class='comment'>/* error */</span>);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='comment'>/* ignore errors */</span></td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> mate_desktop_prepend_terminal_to_vector (&amp;term_argc, &amp;term_argv);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> args = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> arg_ptr = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> <span class='keyword'>if</span> (screen)</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> sn_display = sn_display_new (<span class='macro'>GDK_DISPLAY_XDISPLAY (gdkdisplay)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdkdisplay))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> sn_error_trap_push,</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> sn_error_trap_pop);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='comment'>/* Only initiate notification if desktop file supports it.</span></td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='comment'>* (we could avoid setting up the SnLauncherContext if we aren't going</span></td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='comment'>* to initiate, but why bother)</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> startup_class = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"StartupWMClass"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> <span class='keyword'>if</span> (startup_class ||</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> mate_desktop_item_get_boolean (item, <span class='string_literal'>"StartupNotify"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> sn_context = sn_launcher_context_new (sn_display,</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> screen ? gdk_x11_screen_get_screen_number (screen) :</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> <span class='macro'>DefaultScreen (GDK_DISPLAY_XDISPLAY (gdkdisplay))<span class='macro_popup'>(((_XPrivDisplay)((gdk_x11_display_get_xdisplay (gdkdisplay))<br>))-&gt;default_screen)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_GENERIC_NAME<span class='macro_popup'>"GenericName"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> <span class='keyword'>if</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='keyword'>char</span> *description;</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> sn_launcher_context_set_name (sn_context, name);</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> description = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Starting %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Starting %s"))</span></span>, name);</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> sn_launcher_context_set_description (sn_context, description);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> g_free (description);</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> icon = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>if</span> (icon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> sn_launcher_context_set_icon_name (sn_context, icon);</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> sn_launcher_context_set_workspace (sn_context, workspace);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (startup_class != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> sn_launcher_context_set_wmclass (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> startup_class);</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> sn_display = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> <span class='keyword'>if</span> (screen) {</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> envp = make_environment_for_screen (screen, envp);</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> exec_locale = g_filename_from_utf8 (exec, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> <span class='keyword'>if</span> (exec_locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> exec_locale = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> added_status = ADDED_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> new_exec = expand_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> exec_locale,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> args, &amp;arg_ptr, &amp;added_status);</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_uris) {</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> uris = stringify_uris (args);</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> <span class='comment'>/* append_uris and append_paths are mutually exlusive */</span></td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_paths) {</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> uris = stringify_files (args);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> <span class='keyword'>if</span> (launched &gt; 0 &amp;&amp; added_status == ADDED_NONE) {</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (new_exec,</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> &amp;temp_argc, &amp;temp_argv, error)) {</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> <span class='comment'>/* The error now comes from g_shell_parse_argv */</span></td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> vector_list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; term_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='macro'>g_strdup (term_argv[i])<span class='macro_popup'>g_strdup_inline (term_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; temp_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> <span class='macro'>g_strdup (temp_argv[i])<span class='macro_popup'>g_strdup_inline (temp_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> g_strfreev (temp_argv);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> real_argv = list_to_vector (vector_list);</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_slist_free_full (vector_list, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span class='keyword'>if</span> (sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> !sn_launcher_context_get_initiated (sn_context)) {</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> <span class='comment'>/* This means that we always use the first real_argv[0]</span></td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> <span class='comment'>* we select for the "binary name", but it's probably</span></td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='comment'>* OK to do that. Binary name isn't super-important</span></td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> <span class='comment'>* anyway, and we can't initiate twice, and we</span></td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> <span class='comment'>* must initiate prior to fork/exec.</span></td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> sn_launcher_context_set_binary_name (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> real_argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='keyword'>if</span> (item-&gt;launch_time &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> launch_time = gdk_x11_display_get_user_time (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> sn_launcher_context_initiate (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> g_get_prgname () ? g_get_prgname () : <span class='string_literal'>"unknown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> real_argv[0],</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> launch_time);</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='comment'>/* Don't allow accidental reuse of same timestamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> ((MateDesktopItem *)item)-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> envp = make_spawn_environment_for_sn_context (sn_context, envp);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span class='keyword'>if</span> ( ! g_spawn_async (working_dir,</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> real_argv,</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> envp,</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH <span class='comment'>/* flags */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func */</span></td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func_data */</span></td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> (do_not_reap_child ? &amp;pid : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='comment'>/* child_pid */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> error)) {</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='comment'>/* The error was set for us,</span></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='comment'>* we just can't launch this thingie */</span></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (do_not_reap_child) {</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> g_child_watch_add (pid, dummy_child_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> launched ++;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> <span class='keyword'>if</span> (arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> arg_ptr = arg_ptr-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> <span class='comment'>/* rinse, repeat until we run out of arguments (That</span></td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> <span class='comment'>* is if we were adding singles anyway) */</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> } <span class='keyword'>while</span> (added_status == ADDED_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> ! launch_only_one);</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_free (exec_locale);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> <span class='keyword'>if</span> ((sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)){</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> sn_launcher_context_complete (sn_context); <span class='comment'>/* end sequence */</span></td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> add_startup_timeout (screen ? screen :</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> gdk_display_get_default_screen (gdk_display_get_default ()),</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> sn_display_unref (sn_display);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION */</span></td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> free_args (args);</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>if</span> (term_argv)</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> g_strfreev (term_argv);</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"><span class='comment'>/* strip any trailing &amp;, return FALSE if bad things happen and</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='comment'>we end up with an empty string */</span></td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">strip_the_amp (<span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> size_t exec_len;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> <span class='macro'>g_strstrip (exec)<span class='macro_popup'>g_strchomp (g_strchug (exec))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> exec_len = strlen (exec);</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='comment'>/* kill any trailing '&amp;' */</span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='keyword'>if</span> (exec[exec_len-1] == '&amp;') {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> exec[exec_len-1] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> g_strchomp (exec);</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='comment'>/* can't exactly launch an empty thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>char</span> *the_exec;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> exec = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='comment'>/* This is a URL, so launch it as a url */</span></td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *url;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> url = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> <span class='comment'>/* Mate panel used to put this in Exec */</span></td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0'))</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> url = exec;</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0')) {</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_URL,</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No URL to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No URL to launch"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> retval = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> url,</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> <span class='macro'>GDK_CURRENT_TIME<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='keyword'>return</span> retval ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='comment'>/* check the type, if there is one set */</span></td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type != MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NOT_LAUNCHABLE,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Not a launchable item"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Not a launchable item"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> exec[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='comment'>/* make a new copy and get rid of spaces */</span></td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> the_exec = <span class='macro'>g_alloca (strlen (exec) + 1)<span class='macro_popup'>__builtin_alloca (strlen (exec) + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> g_strlcpy (the_exec, exec, strlen (exec) + 1);</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> ( ! strip_the_amp (the_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_BAD_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Bad command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Bad command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> ret = ditem_execute (item, the_exec, file_list, screen, workspace, envp,</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_ONLY_ONE),</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_USE_CURRENT_DIR),</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_URIS),</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_PATHS),</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_DO_NOT_REAP_CHILD),</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='comment'>* mate_desktop_item_launch:</span></td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='comment'>* This function runs the program listed in the specified 'item',</span></td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>* optionally appending additional arguments to its command line. It uses</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* #g_shell_parse_argv to parse the the exec string into a vector which is</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>* then passed to #g_spawn_async for execution. This can return all</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* the errors from MateURL, #g_shell_parse_argv and #g_spawn_async,</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* in addition to it's own. The files are</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* only added if the entry defines one of the standard % strings in it's</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>* Exec field.</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line">mate_desktop_item_launch (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> item, file_list, flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> <span class='comment'>* @envp: child's environment, or %NULL to inherit parent's</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line">mate_desktop_item_launch_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_on_screen:</span></td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span class='comment'>* @screen: the %GdkScreen on which the application should be launched</span></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span class='comment'>* @workspace: the workspace on which the app should be launched (-1 for current)</span></td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* additionally attempts to launch the application on a given screen</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>* and workspace.</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">mate_desktop_item_launch_on_screen (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> screen, workspace, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='comment'>* mate_desktop_item_drop_uri_list:</span></td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>* A list of files or urls dropped onto an icon, the proper (Url or File)</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> <span class='comment'>* exec is run you can pass directly string that you got as the</span></td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> <span class='comment'>* text/uri-list. This just parses the list and calls</span></td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line">mate_desktop_item_drop_uri_list (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_drop_uri_list_with_env (item, uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"><span class='comment'>* mate_desktop_item_drop_uri_list_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"><span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"><span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"><span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>* @envp: child's environment</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"><span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"><span class='comment'>* See mate_desktop_item_drop_uri_list for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"><span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"><span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"><span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"><span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line">mate_desktop_item_drop_uri_list_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='keyword'>char</span> **uris;</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> uris = g_uri_list_extract_uris (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='keyword'>for</span> (uri = uris[0]; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; uri++) {</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> list = g_list_prepend (list, uri);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> list = g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> ret = mate_desktop_item_launch_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> item, list, flags, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> g_strfreev (uris);</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> g_list_free (list);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line">exec_exists (<span class='keyword'>const</span> <span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='keyword'>if</span> (g_path_is_absolute (exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='keyword'>if</span> (access (exec, <span class='macro'>X_OK<span class='macro_popup'>1</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>char</span> *tryme;</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> tryme = g_find_program_in_path (exec);</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> <span class='keyword'>if</span> (tryme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> g_free (tryme);</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> <span class='comment'>* mate_desktop_item_exists:</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* Attempt to figure out if the program that can be executed by this item</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>* actually exists. First it tries the TryExec attribute to see if that</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* contains a program that is in the path. Then if there is no such</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>* attribute, it tries the first word of the Exec attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> <span class='comment'>* Returns: A boolean, %TRUE if it exists, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">mate_desktop_item_exists (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *try_exec;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> try_exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TRY_EXEC<span class='macro_popup'>"TryExec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> <span class='keyword'>if</span> (try_exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> ! exec_exists (try_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exe;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (exec, &amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='keyword'>if</span> (argc &lt; 1) {</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> exe = argv[0];</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> <span class='keyword'>if</span> ( ! exec_exists (exe)) {</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> <span class='comment'>* mate_desktop_item_get_entry_type:</span></td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='comment'>* Gets the type attribute (the 'Type' field) of the item. This should</span></td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> <span class='comment'>* usually be 'Application' for an application, but it can be 'Directory'</span></td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='comment'>* for a directory description. There are other types available as well.</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> <span class='comment'>* The type usually indicates how the desktop item should be handeled and</span></td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='comment'>* how the 'Exec' field should be handeled.</span></td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='comment'>* Returns: The type of the specified 'item'. The returned</span></td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='comment'>* memory remains owned by the MateDesktopItem and should not be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line">MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line">mate_desktop_item_get_entry_type (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, 0)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>return</span> item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line">mate_desktop_item_set_entry_type (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> MateDesktopItemType type)</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> item-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_NULL:</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION:</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Application"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_LINK:</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE:</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"FSDevice"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"MimeType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY:</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE:</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Service"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"ServiceType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> <span class='comment'>* mate_desktop_item_get_file_status:</span></td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='comment'>* This function checks the modification time of the on-disk file to</span></td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> <span class='comment'>* see if it is more recent than the in-memory data.</span></td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> <span class='comment'>* Returns: An enum value that specifies whether the item has changed since being loaded.</span></td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line">MateDesktopItemStatus</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line">mate_desktop_item_get_file_status (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> MateDesktopItemStatus retval;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> retval = MATE_DESKTOP_ITEM_UNCHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_has_attribute (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> retval = MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (((guint64) item-&gt;mtime) &lt; g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> retval = MATE_DESKTOP_ITEM_CHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='comment'>* mate_desktop_item_find_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> <span class='comment'>* @icon: icon name, something you'd get out of the Icon key</span></td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>* @desired_size: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='comment'>* is not an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line">mate_desktop_item_find_icon (GtkIconTheme *icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon,</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='keyword'>int</span> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='keyword'>int</span> flags)</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> GtkIconInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='keyword'>char</span> *full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='macro'>g_return_val_if_fail (icon_theme == NULL ||<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='macro'>GTK_IS_ICON_THEME (icon_theme), NULL)<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || strcmp(icon,<span class='string_literal'>""</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_path_is_absolute (icon)) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> <span class='keyword'>if</span> (g_file_test (icon, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> <span class='keyword'>char</span> *icon_no_extension;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='keyword'>if</span> (icon_theme == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> icon_theme = gtk_icon_theme_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> icon_no_extension = <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> p = strrchr (icon_no_extension, '.');</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='keyword'>if</span> (p &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> (strcmp (p, <span class='string_literal'>".png"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> strcmp (p, <span class='string_literal'>".xpm"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> strcmp (p, <span class='string_literal'>".svg"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> *p = 0;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> info = gtk_icon_theme_lookup_icon (icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> icon_no_extension,</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> full = <span class='macro'>g_strdup (gtk_icon_info_get_filename (info))<span class='macro_popup'>g_strdup_inline (gtk_icon_info_get_filename (info))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> g_free (icon_no_extension);</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='keyword'>return</span> full;</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> <span class='comment'>* mate_desktop_item_get_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* is not set as an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line">mate_desktop_item_get_icon (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> GtkIconTheme *icon_theme)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='comment'>/* maybe this function should be deprecated in favour of find icon</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> <span class='comment'>* -George */</span></td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> icon = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_find_icon (icon_theme, icon,</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> 48 <span class='comment'>/* desired_size */</span>,</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> 0 <span class='comment'>/* flags */</span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* mate_desktop_item_get_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Returns: The file location associated with 'item'.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">mate_desktop_item_get_location (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>return</span> item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='comment'>* @location: A uri string specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item.</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line">mate_desktop_item_set_location (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *location)</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> strcmp (item-&gt;location, location) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> item-&gt;location = <span class='macro'>g_strdup (location)<span class='macro_popup'>g_strdup_inline (location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='comment'>/* This is ugly, but useful internally */</span></td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>if</span> (item-&gt;mtime != <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location) {</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>if</span> (g_file_info_has_attribute (info,</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> item-&gt;mtime = g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='comment'>/* Make sure that save actually saves */</span></td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location_file:</span></td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='comment'>* @file: A local filename specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item to the given @file.</span></td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line">mate_desktop_item_set_location_file (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *file)</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> mate_desktop_item_set_location_gfile (item, gfile);</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">mate_desktop_item_set_location_gfile (MateDesktopItem *item, GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mate_desktop_item_set_location (item, uri);</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> <span class='comment'>* Reading/Writing different sections, NULL is the standard section</span></td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line">mate_desktop_item_attr_exists (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> <span class='comment'>* String type</span></td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line">mate_desktop_item_get_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line">mate_desktop_item_set_string (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> set (item, attr, value);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> item-&gt;type = type_from_string (value);</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='comment'>* LocaleString type</span></td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>return</span> lookup_best_locale(item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring_lang(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr, <span class='keyword'>const</span> <span class='keyword'>char</span>* language)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>return</span> lookup_locale(item, attr, language);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='comment'>* mate_desktop_item_get_string_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> <span class='comment'>* @attr: An attribute name</span></td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='comment'>* Returns the current locale that is used for the given attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> <span class='comment'>* This might not be the same for all attributes. For example, if your</span></td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='comment'>* locale is "en_US.ISO8859-1" but attribute FOO only has "en_US" then</span></td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> <span class='comment'>* that would be returned for attr = "FOO". If attribute BAR has</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* "en_US.ISO8859-1" then that would be returned for "BAR".</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* Returns: a string equal to the current locale or NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>* if the attribute is invalid or there is no matching locale.</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">mate_desktop_item_get_attr_locale (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> value = lookup_locale (item, attr, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">mate_desktop_item_get_languages (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>char</span> *language = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>if</span> (attr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> lookup_locale (item, attr, language) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> list = g_list_prepend (list, language);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line">get_language (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>/* find first without encoding */</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='keyword'>if</span> (strchr (langs_pointer[i], '.') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_desktop_item_set_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> set_locale (item, attr, get_language (), value);</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line">mate_desktop_item_set_localestring_lang (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> set_locale (item, attr, language, value);</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_desktop_item_clear_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> <span class='keyword'>for</span> (l = item-&gt;languages; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> set_locale (item, attr, l-&gt;data, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> set (item, attr, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='comment'>* Strings, Regexps types</span></td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">mate_desktop_item_get_strings (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> <span class='keyword'>return</span> g_strsplit (value, <span class='string_literal'>";"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">mate_desktop_item_set_strings (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> <span class='keyword'>char</span> **strings)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='keyword'>char</span> *str, *str2;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> str = g_strjoinv (<span class='string_literal'>";"</span>, strings);</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> str2 = g_strconcat (str, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> set (item, attr, str2);</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> g_free (str2);</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='comment'>* Boolean type</span></td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line">mate_desktop_item_get_boolean (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> <span class='keyword'>return</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> atoi (value) != 0);</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line">mate_desktop_item_set_boolean (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean value)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> set (item, attr, value ? <span class='string_literal'>"true"</span> : <span class='string_literal'>"false"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line">mate_desktop_item_set_launch_time (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> guint32 timestamp)</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> item-&gt;launch_time = timestamp;</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> <span class='comment'>* Clearing attributes</span></td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line">mate_desktop_item_clear_section (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> sec = find_section (item, section);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> <span class='keyword'>if</span> (sec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> g_free (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> g_list_free (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (li = sec-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> sec-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_list_free (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"><span class='comment'>/************************************************************</span></td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='comment'>* Parser: *</span></td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='comment'>************************************************************/</span></td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">standard_is_boolean (<span class='keyword'>const</span> <span class='keyword'>char</span> * key)</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> <span class='keyword'>static</span> GHashTable *bools = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='keyword'>if</span> (bools == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> bools = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (bools, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line">standard_is_strings (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>static</span> GHashTable *strings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>if</span> (strings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> strings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (strings, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='comment'>/* If no need to cannonize, returns NULL */</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line">cannonize (<span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='keyword'>if</span> (standard_is_boolean (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> <span class='keyword'>if</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> atoi (value) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"true"</span>)<span class='macro_popup'>g_strdup_inline ("true")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"false"</span>)<span class='macro_popup'>g_strdup_inline ("false")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (standard_is_strings (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> <span class='keyword'>int</span> len = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>if</span> (len == 0 || value[len-1] != ';') {</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> <span class='keyword'>return</span> g_strconcat (value, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='comment'>/* XXX: Perhaps we should canonize numeric values as well, but this</span></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span class='comment'>* has caused some subtle problems before so it needs to be done</span></td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='comment'>* carefully if at all */</span></td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">decode_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='keyword'>char</span> *p = g_malloc (strlen (s) + 1);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> <span class='keyword'>char</span> *q = p;</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='keyword'>if</span> (*s == '\\'){</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> <span class='keyword'>switch</span> (*(++s)){</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='keyword'>case</span> 's':</td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> *p++ = ' ';</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> <span class='keyword'>case</span> 't':</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> *p++ = '\t';</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> *p++ = '\n';</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> <span class='keyword'>case</span> 'r':</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> *p++ = '\r';</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span id="start32"><span class='keyword'>static</span></span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">escape_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> <span class='keyword'>char</span> *<span id="start31"><span id="end32">return_value</span></span>, *p;</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *q;</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>int</span> len = 0;</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span id="start30"><span id="end31"><span class='keyword'>if</span></span></span> (<span id="start29"><span id="end30"><span class='variable'>s<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>11.1</div></td><td>'s' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup(<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> <span id="start26"><span id="end27"><span id="start28"><span id="end29">q</span></span></span></span> = <span id="start27"><span id="end28">s</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span id="start13"><span id="end14"><span id="start19"><span id="end20"><span id="start25"><span id="end26"><span class='keyword'>while</span></span></span></span></span></span></span> (*q){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 3116</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> <span id="start18"><span id="end19"><span id="start24"><span id="end25">len</span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span id="start17"><span id="end18"><span id="start23"><span id="end24"><span class='keyword'>if</span></span></span></span></span> (<span id="start16"><span class="mrange"><span id="end17"><span id="start22"><span class="mrange"><span id="end23">strchr</span></span></span></span> (<span class='string_literal'>"\n\r\t\\"</span>, *q) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span id="start15"><span id="end16"><span id="start21"><span id="end22">q</span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> <span id="start14"><span id="end15"><span id="start20"><span id="end21">}</td></tr></span></span></span></span>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span id="start10"><span id="end11"><span id="start12"><span id="end13">return_value</span></span></span></span> = p = (<span class='keyword'>char</span> *) g_malloc (<span id="start11"><span id="end12">len</span></span> + 1);</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span id="start4"><span class='keyword'>do</span></span> {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Loop condition is true. Execution continues on line 3118</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> <span id="start3"><span id="end4"><span id="start9"><span id="end10"><span class='keyword'>switch</span></span></span></span></span> (<span id="start2"><span id="end3"><span id="start8"><span id="end9">*</span></span></span></span>s){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Control jumps to 'case 92:' at line 3131</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Control jumps to 'case 10:' at line 3123</td><td><div class="PathNav"><a href="#EndPath" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='keyword'>case</span> '\t':</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> *p++ = 't';</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> <span class='keyword'>case</span> '\n':</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> <span id="start1"><span id="end2">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> <span class="mrange"><span id="start0"><span id="end1">*</span></span>p++ <span id="end0">=</span> 'n';</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:30ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>case</span> '\r':</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> *p++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> <span id="start7"><span id="end8">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> <span id="start6"><span id="end7">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span id="start5"><span id="end6"><span class='keyword'>break</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td> Execution continues on line 3138</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> } <span class='keyword'>while</span> (<span id="end5">*</span>s++);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> <span class='keyword'>return</span> return_value;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line">check_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> GIConv cd = g_iconv_open (<span class='string_literal'>"UTF-8"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> ((GIConv)-1 == cd)</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> g_iconv_close (cd);</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line">insert_locales (GHashTable *encodings, <span class='keyword'>char</span> *enc, ...)</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='macro'>va_start (args, enc)<span class='macro_popup'>__builtin_va_start(args, enc)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>for</span> (;;) {</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> g_hash_table_insert (encodings, s, enc);</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"><span class='comment'>/* make a standard conversion table from the desktop standard spec */</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">init_encodings (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GHashTable *encodings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> <span class='comment'>/* "C" is plain ascii */</span></td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ASCII"</span>, <span class='string_literal'>"C"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ARMSCII-8"</span>, <span class='string_literal'>"by"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"BIG5"</span>, <span class='string_literal'>"zh_TW"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"CP1251"</span>, <span class='string_literal'>"be"</span>, <span class='string_literal'>"bg"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"EUC-CN"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-CN"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GB2312"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-JP"</span>, <span class='string_literal'>"ja"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-KR"</span>, <span class='string_literal'>"ko"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GEORGIAN-PS"</span>, <span class='string_literal'>"ka"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-1"</span>, <span class='string_literal'>"br"</span>, <span class='string_literal'>"ca"</span>, <span class='string_literal'>"da"</span>, <span class='string_literal'>"de"</span>, <span class='string_literal'>"en"</span>, <span class='string_literal'>"es"</span>, <span class='string_literal'>"eu"</span>, <span class='string_literal'>"fi"</span>, <span class='string_literal'>"fr"</span>, <span class='string_literal'>"gl"</span>, <span class='string_literal'>"it"</span>, <span class='string_literal'>"nl"</span>, <span class='string_literal'>"wa"</span>, <span class='string_literal'>"no"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"sv"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-2"</span>, <span class='string_literal'>"cs"</span>, <span class='string_literal'>"hr"</span>, <span class='string_literal'>"hu"</span>, <span class='string_literal'>"pl"</span>, <span class='string_literal'>"ro"</span>, <span class='string_literal'>"sk"</span>, <span class='string_literal'>"sl"</span>, <span class='string_literal'>"sq"</span>, <span class='string_literal'>"sr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-3"</span>, <span class='string_literal'>"eo"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-5"</span>, <span class='string_literal'>"mk"</span>, <span class='string_literal'>"sp"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-7"</span>, <span class='string_literal'>"el"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-9"</span>, <span class='string_literal'>"tr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-13"</span>, <span class='string_literal'>"lt"</span>, <span class='string_literal'>"lv"</span>, <span class='string_literal'>"mi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-14"</span>, <span class='string_literal'>"ga"</span>, <span class='string_literal'>"cy"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-15"</span>, <span class='string_literal'>"et"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-R"</span>, <span class='string_literal'>"ru"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-U"</span>, <span class='string_literal'>"uk"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"TCVN-5712"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN-5712"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TIS-620"</span>, <span class='string_literal'>"th"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "VISCII", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>return</span> encodings;</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line">get_encoding_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span class='keyword'>char</span> lang[3];</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *encoding;</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span class='keyword'>static</span> GHashTable *encodings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='comment'>/* if locale includes encoding, use it */</span></td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> encoding = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> encoding+1;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='keyword'>if</span> (encodings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> encodings = init_encodings ();</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='comment'>/* first try the entire locale (at this point ll_CC) */</span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> encoding = g_hash_table_lookup (encodings, locale);</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>return</span> encoding;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='comment'>/* Try just the language */</span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> strncpy (lang, locale, 2);</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> lang[2] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (encodings, lang);</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"><span class='keyword'>static</span> Encoding</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">get_encoding (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='keyword'>char</span> buf [<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> gboolean all_valid_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='keyword'>if</span> (strncmp (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> buf,</td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='keyword'>char</span> *p = &amp;buf[strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)];</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='keyword'>if</span> (*p != '=')</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"UTF-8"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"Legacy-Mixed"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='comment'>/* According to the spec we're not supposed</span></td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='comment'>* to read a file like this */</span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='keyword'>return</span> ENCODING_UNKNOWN;</td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (<span class='string_literal'>"[KDE Desktop Entry]"</span>, buf) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='comment'>/* don't break yet, we still want to support</span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='comment'>* Encoding even here */</span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8 &amp;&amp; ! g_utf8_validate (buf, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> all_valid_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='keyword'>if</span> (old_kde)</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> <span class='comment'>/* try to guess by location */</span></td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strstr (rb-&gt;uri, <span class='string_literal'>"mate/apps/"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> <span class='comment'>/* old mate */</span></td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> <span class='comment'>/* A dilemma, new KDE files are in UTF-8 but have no Encoding</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> <span class='comment'>* info, at this time we really can't tell. The best thing to</span></td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='comment'>* do right now is to just assume UTF-8 if the whole file</span></td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> <span class='comment'>* validates as utf8 I suppose */</span></td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8)</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line">decode_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *value, Encoding encoding, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* if legacy mixed, then convert */</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_LEGACY_MIXED) {</td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *char_encoding = get_encoding_from_locale (locale);</td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>char</span> *utf8_string;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='keyword'>if</span> (char_encoding == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='keyword'>if</span> (strcmp (char_encoding, <span class='string_literal'>"ASCII"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> utf8_string = g_convert (value, -1, <span class='string_literal'>"UTF-8"</span>, char_encoding,</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='keyword'>if</span> (utf8_string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> retval = decode_string_and_dup (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> g_free (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='comment'>/* if utf8, then validate */</span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_UTF8) {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='keyword'>if</span> ( ! g_utf8_validate (value, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='comment'>/* invalid utf8, ignore this key */</span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='comment'>/* Meaning this is not a localized string */</span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">snarf_locale_from_key (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *brace;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='keyword'>char</span> *locale, *p;</td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> brace = strchr (key, '[');</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='keyword'>if</span> (brace == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> locale = <span class='macro'>g_strdup (brace + 1)<span class='macro_popup'>g_strdup_inline (brace + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (*locale == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> p = strchr (locale, ']');</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> <span class='keyword'>return</span> locale;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line">insert_key (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> Section *cur_section,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> Encoding encoding,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value,</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> gboolean old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> gboolean no_translations)</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> <span class='keyword'>char</span> *k;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> <span class='keyword'>char</span> *val;</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"> <span class='comment'>/* we always store everything in UTF-8 */</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> val = <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> <span class='keyword'>char</span> *locale = snarf_locale_from_key (key);</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> <span class='comment'>/* If we're ignoring translations */</span></td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> <span class='keyword'>if</span> (no_translations &amp;&amp; locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> val = decode_string (value, encoding, locale);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* Ignore this key, it's whacked */</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='keyword'>if</span> (val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> g_strchomp (val);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='comment'>/* For old KDE entries, we can also split by a comma</span></td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='comment'>* on sort order, so convert to semicolons */</span></td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> <span class='keyword'>if</span> (old_kde &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> strchr (val, ';') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> <span class='keyword'>for</span> (i = 0; val[i] != '\0'; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> <span class='keyword'>if</span> (val[i] == ',')</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> val[i] = ';';</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> <span class='comment'>/* Check some types, not perfect, but catches a lot</span></td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> <span class='comment'>* of things */</span></td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> <span class='keyword'>char</span> *cannon = cannonize (key, val);</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> <span class='keyword'>if</span> (cannon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> val = cannon;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> <span class='comment'>/* Take care of the language part */</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> <span class='comment'>/* Whack C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> p = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> <span class='keyword'>char</span> *p, *brace;</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> <span class='comment'>/* Whack the encoding part */</span></td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> p = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> item-&gt;languages = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> (item-&gt;languages, locale);</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> <span class='comment'>/* Whack encoding from encoding in the key */</span></td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> brace = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> p = strchr (brace, '.');</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> *p = ']';</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line"> *(p+1) = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, k) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> item-&gt;keys = g_list_prepend (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> <span class='macro'>g_strdup (k)<span class='macro_popup'>g_strdup_inline (k)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> g_hash_table_replace (item-&gt;main_hash, k, val);</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> cur_section-&gt;name, k);</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, full) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> cur_section-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> g_list_prepend (cur_section-&gt;keys, k);</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> full, val);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line">setup_type (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type = g_hash_table_lookup (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> <span class='keyword'>char</span> *base = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> <span class='keyword'>if</span> (base != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> strcmp (base, <span class='string_literal'>".directory"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> <span class='comment'>/* This gotta be a directory */</span></td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"Directory"</span>)<span class='macro_popup'>g_strdup_inline ("Directory")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> item-&gt;type = type_from_string (type);</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"><span class='comment'>/* fallback to find something suitable for C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line">try_english_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>char</span> *locales[] = { <span class='string_literal'>"en_US"</span>, <span class='string_literal'>"en_GB"</span>, <span class='string_literal'>"en_AU"</span>, <span class='string_literal'>"en"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> <span class='keyword'>for</span> (i = 0; locales[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> str = <span class='macro'>g_strdup (lookup_locale (item, key, locales[i]))<span class='macro_popup'>g_strdup_inline (lookup_locale (item, key, locales[i]))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> <span class='comment'>/* We need a 7-bit ascii string, so whack all</span></td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='comment'>* above 127 chars */</span></td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> guchar *p;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='keyword'>for</span> (p = (guchar *)str; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>if</span> (*p &gt; 127)</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> *p = '?';</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> <span class='keyword'>return</span> str;</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line">sanitize (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type;</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> type = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> <span class='comment'>/* understand old mate style url exec thingies */</span></td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (type, <span class='string_literal'>"URL"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='keyword'>if</span> (exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> <span class='comment'>/* Note, this must be in this order */</span></td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>, exec);</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='comment'>/* we make sure we have Name, Encoding and Version */</span></td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>char</span> *name = try_english_key (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> <span class='comment'>/* If no name, use the basename */</span></td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> name = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> <span class='comment'>/* If no uri either, use same default as mate_desktop_item_new */</span></td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned here is the name of</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> <span class='comment'>* an application or a document */</span></td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"No name"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("mate-desktop", "No name"<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> <span class='comment'>/* We store everything in UTF-8 so write that down */</span></td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line"> <span class='comment'>/* this is the version that we follow, so write it down */</span></td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"1.0"</span>)<span class='macro_popup'>g_strdup_inline ("1.0")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> FirstBrace,</td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> OnSecHeader,</td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> IgnoreToEOL,</td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> IgnoreToEOLFirst,</td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> KeyDef,</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> KeyDefOnKey,</td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> KeyValue</td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line">ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> <span class='keyword'>int</span> state;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> <span class='keyword'>char</span> CharBuffer [1024];</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> <span class='keyword'>char</span> *next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> Encoding encoding;</td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> Section *cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> <span class='keyword'>char</span> *key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> encoding = get_encoding (rb);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> <span class='keyword'>if</span> (encoding == ENCODING_UNKNOWN) {</td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_UNKNOWN_ENCODING,</td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Unknown encoding of: %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Unknown encoding of: %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"> <span class='comment'>/* Rewind since get_encoding goes through the file */</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line"> <span class='keyword'>if</span> (! readbuf_rewind (rb, error)) {</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> <span class='comment'>/* Note: location and mtime are filled in by the new_from_file</span></td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='comment'>* function since it has those values */</span></td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"><span class='directive'>#define OVERFLOW (next == &amp;CharBuffer [sizeof(CharBuffer)-1])</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> <span class='keyword'>while</span> ((c = readbuf_getc (rb)) != <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> <span class='keyword'>if</span> (c == '\r') <span class='comment'>/* Ignore Carriage Return */</span></td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> <span class='keyword'>switch</span> (state) {</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> <span class='keyword'>case</span> OnSecHeader:</td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> <span class='keyword'>if</span> (c == ']' || OVERFLOW) {</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> cur_section-&gt;keys = g_list_reverse</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='string_literal'>"KDE Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line"> <span class='string_literal'>"Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> cur_section = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> cur_section-&gt;name =</td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> cur_section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> item-&gt;sections = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> (item-&gt;sections, cur_section);</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (c == '[') {</td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='comment'>/* FIXME: probably error out instead of ignoring this */</span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOL:</td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOLFirst:</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> <span class='keyword'>if</span> (c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> <span class='keyword'>if</span> (state == IgnoreToEOLFirst)</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line"> <span class='keyword'>case</span> FirstBrace:</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> <span class='keyword'>case</span> KeyDef:</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line"> <span class='keyword'>case</span> KeyDefOnKey:</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> <span class='keyword'>if</span> (c == '#') {</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> state = IgnoreToEOLFirst;</td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> <span class='keyword'>if</span> (c == '[' &amp;&amp; state != KeyDefOnKey){</td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> state = OnSecHeader;</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* On first pass, don't allow dangling keys */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> <span class='keyword'>if</span> ((c == ' ' &amp;&amp; state != KeyDefOnKey) || c == '\t')</td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> <span class='keyword'>if</span> (c == '\n' || OVERFLOW) { <span class='comment'>/* Abort Definition */</span></td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> <span class='keyword'>if</span> (c == '=' || OVERFLOW){</td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> key = <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> state = KeyValue;</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"> state = KeyDefOnKey;</td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line"> <span class='keyword'>case</span> KeyValue:</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='keyword'>if</span> (OVERFLOW || c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> state = (c == '\n') ? KeyDef : IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"> } <span class='comment'>/* switch */</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line"> } <span class='comment'>/* while ((c = getc_unlocked (f)) != EOF) */</span></td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; state == KeyValue) {</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"><span class='directive'>#undef OVERFLOW</span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> cur_section-&gt;keys = g_list_reverse (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"> item-&gt;keys = g_list_reverse (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line"> <span class='comment'>/* sections were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line"> item-&gt;sections = g_list_reverse (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> <span class='comment'>/* sanitize some things */</span></td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> sanitize (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> <span class='comment'>/* make sure that we set up the type */</span></td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> setup_type (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> stream_printf (GFileOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line">stream_printf (GFileOutputStream *stream, <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...)</td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> gchar *s;</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> <span class='macro'>va_start (args, format)<span class='macro_popup'>__builtin_va_start(args, format)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> s = g_strdup_vprintf (format, args);</td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> <span class='comment'>/* FIXME: what about errors */</span></td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> g_output_stream_write (<span class='macro'>G_OUTPUT_STREAM (stream)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((stream)), ((g_output_stream_get_type ()))))))</span></span>, s, strlen (s),</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> g_free (s);</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line">dump_section (MateDesktopItem *item, GFileOutputStream *stream, Section *section)</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[%s]\n"</span>, section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> <span class='keyword'>for</span> (li = section-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>, section-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"><span id="start48"><span class='keyword'>static</span></span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line">ditem_save (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> <span id="start47"><span id="end48">GList</span></span> *li;</td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line"> stream = g_file_replace (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, G_FILE_CREATE_NONE,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> <span id="start46"><span id="end47"><span class='keyword'>if</span></span></span> (<span id="start45"><span class="mrange"><span id="end46">stream</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'stream' is not equal to NULL</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line"> <span id="start42"><span id="end43"><span id="start44"><span id="end45">stream_printf</span></span></span></span> (<span id="start43"><span id="end44">stream</span></span>, <span class='string_literal'>"[Desktop Entry]\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> <span id="start41"><span id="end42"><span class='keyword'>for</span></span></span> (li = item-&gt;keys; <span id="start40"><span class="mrange"><span id="end41">li</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>; li = li-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:31ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Assuming 'li' is not equal to NULL</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"> <span id="start37"><span id="end38"><span id="start39"><span id="end40"><span class='keyword'>const</span></span></span></span></span> <span class='keyword'>char</span> *key = <span id="start38"><span id="end39">li</span></span>-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> <span id="start36"><span id="end37"><span class='keyword'>if</span></span></span> (<span id="start35"><span class="mrange"><span id="end36">value</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming 'value' is not equal to NULL</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line"> <span id="start34"><span id="end35"><span class='keyword'>char</span></span></span> *val = <span class="mrange"><span id="end33">escape_string_and_dup</span> (<span id="start33"><span id="end34">value</span></span>)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Calling 'escape_string_and_dup'</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='keyword'>if</span> (item-&gt;sections != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> Section *section = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line"> <span class='comment'>/* Don't write empty sections */</span></td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> <span class='keyword'>if</span> (section-&gt;keys == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> dump_section (item, stream, section);</td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> <span class='keyword'>if</span> (li-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line"><span class='keyword'>static</span> gpointer</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line">_mate_desktop_item_copy (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_copy (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line">_mate_desktop_item_free (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> mate_desktop_item_unref (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">GType</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line">mate_desktop_item_get_type (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line"> <span class='keyword'>static</span> GType type = 0;</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line"> <span class='keyword'>if</span> (type == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> type = g_boxed_type_register_static (<span class='string_literal'>"MateDesktopItem"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> _mate_desktop_item_copy,</td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> _mate_desktop_item_free);</td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line">GQuark</td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line">mate_desktop_item_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='keyword'>static</span> GQuark q = 0;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='keyword'>if</span> (q == 0)</td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> q = g_quark_from_static_string (<span class='string_literal'>"mate-desktop-item-error-quark"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-6a2986.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-6a2986.html
new file mode 100644
index 0000000..c11e59a
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-6a2986.html
@@ -0,0 +1,4711 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-item.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Undefined or garbage value returned to caller -->
+
+<!-- BUGTYPE Garbage return value -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-desktop-item.c -->
+
+<!-- FILENAME mate-desktop-item.c -->
+
+<!-- FUNCTIONNAME ditem_execute -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 6a29864ff2b9d2c757007189d6d238be -->
+
+<!-- BUGLINE 2037 -->
+
+<!-- BUGCOLUMN 2 -->
+
+<!-- BUGPATHLENGTH 53 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-desktop-item.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 2037, column 2</a><br />Undefined or garbage value returned to caller</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-item.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-item.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"975": 1, "976": 1, "977": 1, "978": 1, "1084": 1, "1085": 1, "1086": 1, "1087": 1, "1088": 1, "1089": 1, "1090": 1, "1092": 1, "1094": 1, "1095": 1, "1099": 1, "1101": 1, "1104": 1, "1105": 1, "1106": 1, "1107": 1, "1108": 1, "1110": 1, "1119": 1, "1413": 1, "1414": 1, "1415": 1, "1416": 1, "1417": 1, "1418": 1, "1419": 1, "1420": 1, "1421": 1, "1422": 1, "1423": 1, "1424": 1, "1426": 1, "1459": 1, "1747": 1, "1748": 1, "1749": 1, "1750": 1, "1751": 1, "1752": 1, "1753": 1, "1754": 1, "1755": 1, "1756": 1, "1757": 1, "1758": 1, "1759": 1, "1760": 1, "1761": 1, "1762": 1, "1763": 1, "1764": 1, "1765": 1, "1766": 1, "1767": 1, "1768": 1, "1769": 1, "1770": 1, "1771": 1, "1772": 1, "1773": 1, "1774": 1, "1775": 1, "1777": 1, "1778": 1, "1779": 1, "1780": 1, "1783": 1, "1785": 1, "1792": 1, "1795": 1, "1810": 1, "1811": 1, "1814": 1, "1815": 1, "1877": 1, "1878": 1, "1882": 1, "1889": 1, "1891": 1, "1895": 1, "1896": 1, "1897": 1, "1898": 1, "1899": 1, "1901": 1, "1911": 1, "1920": 1, "1925": 1, "1926": 1, "1932": 1, "1934": 1, "1935": 1, "1939": 1, "1943": 1, "1945": 1, "1946": 1, "1949": 1, "1983": 1, "1984": 1, "1985": 1, "1986": 1, "1989": 1, "1990": 1, "1996": 1, "2000": 1, "2002": 1, "2004": 1, "2009": 1, "2013": 1, "2015": 1, "2024": 1, "2029": 1, "2031": 1, "2034": 1, "2037": 1, "2900": 1, "2901": 1, "2902": 1, "2903": 1, "2904": 1, "2906": 1, "2907": 1, "2908": 1, "2910": 1, "2911": 1, "2914": 1, "2915": 1, "2916": 1, "2917": 1, "2918": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+ <path class="arrow" id="arrow61"/>
+ <path class="arrow" id="arrow62"/>
+ <path class="arrow" id="arrow63"/>
+ <path class="arrow" id="arrow64"/>
+ <path class="arrow" id="arrow65"/>
+ <path class="arrow" id="arrow66"/>
+ <path class="arrow" id="arrow67"/>
+ <path class="arrow" id="arrow68"/>
+ <path class="arrow" id="arrow69"/>
+ <path class="arrow" id="arrow70"/>
+ <path class="arrow" id="arrow71"/>
+ <path class="arrow" id="arrow72"/>
+ <path class="arrow" id="arrow73"/>
+ <path class="arrow" id="arrow74"/>
+ <path class="arrow" id="arrow75"/>
+ <path class="arrow" id="arrow76"/>
+ <path class="arrow" id="arrow77"/>
+ <path class="arrow" id="arrow78"/>
+ <path class="arrow" id="arrow79"/>
+ <path class="arrow" id="arrow80"/>
+ <path class="arrow" id="arrow81"/>
+ <path class="arrow" id="arrow82"/>
+ <path class="arrow" id="arrow83"/>
+ <path class="arrow" id="arrow84"/>
+ <path class="arrow" id="arrow85"/>
+ <path class="arrow" id="arrow86"/>
+ <path class="arrow" id="arrow87"/>
+ <path class="arrow" id="arrow88"/>
+ <path class="arrow" id="arrow89"/>
+ <path class="arrow" id="arrow90"/>
+ <path class="arrow" id="arrow91"/>
+ <path class="arrow" id="arrow92"/>
+ <path class="arrow" id="arrow93"/>
+ <path class="arrow" id="arrow94"/>
+ <path class="arrow" id="arrow95"/>
+ <path class="arrow" id="arrow96"/>
+ <path class="arrow" id="arrow97"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 98,97,94,92,92,92,89,87,84,79,77,76,74,73,70,68,65,64,60,56,52,50,46,45,43,38,35,32,31,29,28,26,23,14,10,8,3,1,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; c-set-style: linux indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/* mate-desktop-item.c - MATE Desktop File Representation</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>Copyright (C) 1999, 2000 Red Hat Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>Copyright (C) 2001 Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>All rights reserved.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>This file is part of the Mate Library.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>Developed by Elliot Lee &lt;[email protected]&gt; and Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>The Mate Library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>The Mate Library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>License along with the Mate Library; see the file COPYING.LIB. If not,</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>Boston, MA 02110-1301, USA. */</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>@NOTATION@</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;limits.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;ctype.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define SN_API_NOT_YET_FROZEN</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;libsn/sn.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#undef MATE_DISABLE_DEPRECATED</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include &lt;mate-desktop-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _MateDesktopItem {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>int</span> refcount;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='comment'>/* all languages used */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList *languages;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> MateDesktopItemType type;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>/* `modified' means that the ditem has been</span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>* modified since the last save. */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gboolean modified;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Keys of the main section only */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GList *sections;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* This includes ALL keys, including</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>* other sections, separated by '/' */</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GHashTable *main_hash;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>char</span> *location;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='comment'>/* If mtime is set to this, set_location won't update mtime,</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='comment'>* this is to be used internally only. */</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='directive'>#define <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span> ((gint64)-2)</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">} Section;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> ENCODING_UNKNOWN,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> ENCODING_UTF8,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> ENCODING_LEGACY_MIXED</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">} Encoding;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* IO reading utils, that look like the libc buffered io stuff</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='directive'>#define <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span> (32 * 1024)</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>char</span> *buf;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> gboolean buf_needs_free;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gboolean past_first_read;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gboolean eof;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> guint64 size;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">} ReadBuf;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> gboolean ditem_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_desktop_item_set_location_gfile (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> GFile *file);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">readbuf_getc (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;eof)</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> rb-&gt;pos == rb-&gt;size) {</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> gssize bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> bytes_read = 0;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> bytes_read = g_input_stream_read (<span class='macro'>G_INPUT_STREAM (rb-&gt;stream)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_input_stream_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> rb-&gt;buf,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='comment'>/* FIXME: handle errors other than EOF */</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (bytes_read &lt;= 0) {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> rb-&gt;eof = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size != 0)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> rb-&gt;past_first_read = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> rb-&gt;size = bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> (guchar) rb-&gt;buf[rb-&gt;pos++];</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='comment'>/* Note, does not include the trailing \n */</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">readbuf_gets (<span class='keyword'>char</span> *buf, gsize bufsize, ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='macro'>g_return_val_if_fail (buf != NULL, NULL)<span class='macro_popup'>do { if ((buf != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "buf != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>g_return_val_if_fail (rb != NULL, NULL)<span class='macro_popup'>do { if ((rb != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rb != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> buf[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> c = readbuf_getc (rb);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> || c == '\n')</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> buf[pos++] = c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> } <span class='keyword'>while</span> (pos &lt; bufsize-1);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; pos == 0)</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> buf[pos++] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='keyword'>return</span> buf;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">readbuf_open (GFile *file, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> stream = g_file_read (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error reading file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error reading file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> rb-&gt;stream = stream;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> rb-&gt;file = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> rb-&gt;uri = uri;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> rb-&gt;buf = g_malloc (<span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> rb-&gt;buf_needs_free = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='comment'>/* rb-&gt;size = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">readbuf_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri, <span class='keyword'>const</span> <span class='keyword'>char</span> *string, gssize length)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= 0, NULL)<span class='macro_popup'>do { if ((length &gt;= 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>/* rb-&gt;file = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* rb-&gt;stream = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> rb-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> rb-&gt;buf = (<span class='keyword'>char</span> *) string;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>/* rb-&gt;buf_needs_free = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> rb-&gt;size = length;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">readbuf_rewind (ReadBuf *rb, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> rb-&gt;eof = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (!rb-&gt;past_first_read)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> rb-&gt;size = 0;</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (g_seekable_seek (<span class='macro'>G_SEEKABLE (rb-&gt;stream)<span class='macro_popup'>((((GSeekable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_seekable_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> 0, G_SEEK_SET, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> rb-&gt;stream = g_file_read (rb-&gt;file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> g_set_error (</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> error, <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error rewinding file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error rewinding file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> rb-&gt;uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line">readbuf_close (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_object_unref (rb-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g_free (rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;buf_needs_free)</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (rb-&gt;buf);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> g_free (rb);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">type_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *type)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>switch</span> (type [0]) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>case</span> 'A':</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Application"</span>))</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>case</span> 'L':</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Link"</span>))</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_LINK;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"FSDevice"</span>))</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> 'M':</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"MimeType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Directory"</span>))</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> 'S':</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Service"</span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"ServiceType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_OTHER;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* mate_desktop_item_new:</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='comment'>* Creates a MateDesktopItem object. The reference count on the returned value is set to '1'.</span></td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* Returns: The new MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">mate_desktop_item_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> retval = <span class='macro'>g_new0 (MateDesktopItem, 1)<span class='macro_popup'>((MateDesktopItem *) g_malloc0_n ((1), sizeof (MateDesktopItem<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> retval-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* These are guaranteed to be set */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned</span></td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>* here is the name of an application or</span></td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>* a document */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No name"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No name"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='string_literal'>"1.0"</span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> retval-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">dup_section (Section *sec)</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> Section *retval = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> retval-&gt;name = <span class='macro'>g_strdup (sec-&gt;name)<span class='macro_popup'>g_strdup_inline (sec-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> retval-&gt;keys = g_list_copy (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">copy_string_hash (gpointer key, gpointer value, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GHashTable *copy = user_data;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> g_hash_table_replace (copy,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>* mate_desktop_item_copy:</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='comment'>* @item: The item to be copied</span></td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* Creates a copy of a MateDesktopItem. The new copy has a refcount of 1.</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* Note: Section stack is NOT copied.</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='comment'>* Returns: The new copy</span></td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">mate_desktop_item_copy (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> retval = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> retval-&gt;type = item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> retval-&gt;modified = item-&gt;modified;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> retval-&gt;location = <span class='macro'>g_strdup (item-&gt;location)<span class='macro_popup'>g_strdup_inline (item-&gt;location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> retval-&gt;mtime = item-&gt;mtime;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> retval-&gt;launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='comment'>/* Languages */</span></td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> retval-&gt;languages = g_list_copy (item-&gt;languages);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='comment'>/* Keys */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> retval-&gt;keys = g_list_copy (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>/* Sections */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> retval-&gt;sections = g_list_copy (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> li-&gt;data = dup_section (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> g_hash_table_foreach (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> copy_string_hash,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> retval-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line">read_sort_order (MateDesktopItem *item, GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>char</span> buf[<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".order"</span>);</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> rb = readbuf_open (child, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>if</span> (str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> str = g_string_new (buf);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>g_string_append (str, buf)<span class='macro_popup'>(__builtin_constant_p (buf) ? __extension__ ({ const char * const<br> __val = (buf); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, buf, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='macro'>g_string_append_c (str, ';')<span class='macro_popup'>g_string_append_c_inline (str, ';')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> mate_desktop_item_set_string (item, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>g_string_free (str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free<br>) ((str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line">make_fake_directory (GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> mate_desktop_item_set_entry_type (item,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> MATE_DESKTOP_ITEM_TYPE_DIRECTORY);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> item-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>; <span class='comment'>/* it doesn't exist, we know that */</span></td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> mate_desktop_item_set_location_gfile (item, child);</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> read_sort_order (item, dir);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_file:</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>* @file: The filename or directory path to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>* This function loads 'file' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">mate_desktop_item_new_from_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *file,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> retval = mate_desktop_item_new_from_gfile (gfile, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* @uri: URI to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* This function loads 'uri' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">mate_desktop_item_new_from_uri (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((uri != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> retval = mate_desktop_item_new_from_gfile (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line">mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> GFile *subfn;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> GFile *parent;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gint64 mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span><span class='string_literal'>","</span><span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp; type != G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_INVALID_TYPE,</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"File '%s' is not a regular file or directory."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "File '%s' is not a regular file or directory."<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> uri);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> GFileInfo *child_info;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> child = g_file_get_child (file, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> child_info = g_file_query_info (child,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>if</span> (child_info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> make_fake_directory (file);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (child_info,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_object_unref (child_info);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> subfn = child;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> subfn = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> rb = readbuf_open (subfn, error);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> ! mate_desktop_item_exists (retval)) {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> mate_desktop_item_unref (retval);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> retval-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> mate_desktop_item_set_location_gfile (retval, subfn);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> retval-&gt;mtime = mtime;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> parent = g_file_get_parent (file);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (parent != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> read_sort_order (retval, parent);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* @string: string to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>* @length: length of string, or -1 to use strlen</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* @error: place to put errors</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='comment'>* This function turns the contents of the string into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">mate_desktop_item_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> gssize length,</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= -1, NULL)<span class='macro_popup'>do { if ((length &gt;= -1)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= -1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (length == -1) {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> length = strlen (string);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> rb = readbuf_new_from_string (uri, string, length);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>/* FIXME: Sort order? */</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">lookup_desktop_file_in_data_dir (<span class='keyword'>const</span> <span class='keyword'>char</span> *desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> path = g_build_filename (data_dir, <span class='string_literal'>"applications"</span>, desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (path, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">file_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *user_data_dir;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>char</span> *retval;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> user_data_dir = g_get_user_data_dir ();</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, user_data_dir))) {</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>for</span> (i = 0; system_data_dirs[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, system_data_dirs[i]))) {</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_basename:</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='comment'>* @basename: The basename of the MateDesktopItem to load.</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='comment'>* This function loads 'basename' from a system data directory and</span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='comment'>* returns its MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">mate_desktop_item_new_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> <span class='keyword'>char</span> *file;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='macro'>g_return_val_if_fail (basename != NULL, NULL)<span class='macro_popup'>do { if ((basename != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "basename != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!(file = file_from_basename (basename))) {</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Cannot find file '%s'"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Cannot find file '%s'"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> basename);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> retval = mate_desktop_item_new_from_file (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> g_free (file);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>* mate_desktop_item_save:</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='comment'>* @under: A new uri (location) for this #MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='comment'>* @force: Save even if it wasn't modified</span></td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='comment'>* @error: #GError return</span></td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='comment'>* Writes the specified item to disk. If the 'under' is NULL, the original</span></td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='comment'>* location is used. It sets the location of this entry to point to the</span></td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>* new location.</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>* Returns: boolean. %TRUE if the file was saved, %FALSE otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">mate_desktop_item_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *under,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> gboolean force,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span class='keyword'>if</span> (under == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> ! force &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> ! item-&gt;modified)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>if</span> (under == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> uri = item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> uri = under;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span class='keyword'>if</span> (uri == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_FILENAME,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No filename to save to"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No filename to save to"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='keyword'>if</span> ( ! ditem_save (item, uri, error))</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> item-&gt;mtime = g_get_real_time () / <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>* mate_desktop_item_ref:</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='comment'>* Description: Increases the reference count of the specified item.</span></td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='comment'>* Returns: the newly referenced @item</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line">mate_desktop_item_ref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line">free_section (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> Section *section = data;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_free (section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> section-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_list_free_full (section-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> g_free (section);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='comment'>* mate_desktop_item_unref:</span></td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='comment'>* Decreases the reference count of the specified item, and destroys the item if there are no more references left.</span></td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">mate_desktop_item_unref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> item-&gt;refcount--;</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>if</span>(item-&gt;refcount != 0)</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_list_free_full (item-&gt;languages, g_free);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> item-&gt;languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> g_list_free_full (item-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> g_list_free_full (item-&gt;sections, (GDestroyNotify) free_section);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> item-&gt;sections = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> g_hash_table_destroy (item-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> item-&gt;main_hash = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> item-&gt;location = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_free (item);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line">find_section (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (strcmp (section, <span class='string_literal'>"Desktop Entry"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> sec = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>if</span> (strcmp (sec-&gt;name, section) == 0)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> sec = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> sec-&gt;name = <span class='macro'>g_strdup (section)<span class='macro_popup'>g_strdup_inline (section)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> item-&gt;sections = g_list_append (item-&gt;sections, sec);</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='comment'>/* Don't mark the item modified, this is just an empty section,</span></td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='comment'>* it won't be saved even */</span></td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line">section_from_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (key == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> p = strchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> name = g_strndup (key, p - key);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> sec = find_section (item, name);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line">key_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>char</span> *p = strrchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='keyword'>return</span> p+1;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span> key;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">lookup (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line">lookup_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='keyword'>return</span> lookup (item, key);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> ret = lookup (item, full);</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">lookup_best_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> ret = lookup_locale (item, key, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>if</span> (ret != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line">set (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> Section *sec = section_from_key (item, key);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (sec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> sec-&gt;keys = g_list_append</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> (sec-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>g_strdup (key_basename (key))<span class='macro_popup'>g_strdup_inline (key_basename (key))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (sec-&gt;keys, key_basename (key),</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> sec-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> g_list_delete_link (sec-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> item-&gt;keys = g_list_append (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> (item-&gt;keys, key, (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> item-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> g_list_delete_link (item-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line">set_locale (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> set (item, key, value);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> set (item, full, value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='comment'>/* add the locale to the list of languages if it wasn't there</span></td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* before */</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> item-&gt;languages = g_list_prepend (item-&gt;languages,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>g_strdup (locale)<span class='macro_popup'>g_strdup_inline (locale)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">list_to_vector (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='keyword'>int</span> len = g_slist_length (list);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> argv = <span class='macro'>g_new0 (<span class='keyword'>char</span> *, len+1)<span class='macro_popup'>((char * *) g_malloc0_n ((len+1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>for</span> (i = 0, li = list;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> li = li-&gt;next, i++) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> argv[i] = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> argv[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>return</span> argv;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">make_args (GList *files)</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> GSList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class='keyword'>for</span> (li = files; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *file = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> gfile = g_file_new_for_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> list = g_slist_prepend (list, gfile);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>return</span> g_slist_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line">free_args (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>for</span> (li = list; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_unref (<span class='macro'>G_FILE (li-&gt;data)<span class='macro_popup'>((((GFile*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((li-&gt;data)), ((g_file_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">escape_single_quotes (<span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> gboolean in_double_quotes)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GString *gs;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *pre = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *post = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; ! in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> pre = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> post = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> pre = <span class='string_literal'>"\"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> post = <span class='string_literal'>"'\""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (strchr (s, '\'') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='keyword'>return</span> g_strconcat (pre, s, post, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gs = g_string_new (pre);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (*p == '\'')</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>g_string_append (gs, <span class='string_literal'>"'\\''"</span>)<span class='macro_popup'>(__builtin_constant_p ("'\\''") ? __extension__ ({ const char<br> * const __val = ("'\\''"); g_string_append_len_inline (gs, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (gs, "'\\''"<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='macro'>g_string_append (gs, post)<span class='macro_popup'>(__builtin_constant_p (post) ? __extension__ ({ const char * const<br> __val = (post); g_string_append_len_inline (gs, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (gs, post, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> URI_TO_LOCAL_BASENAME</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">} ConversionType;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line">convert_uri (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> ConversionType conversion)</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>switch</span> (conversion) {</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>case</span> URI_TO_STRING:</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> retval = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_PATH:</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> retval = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_DIRNAME:</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='keyword'>char</span> *local_path;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> local_path = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> retval = g_path_get_dirname (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_BASENAME:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> retval = g_file_get_basename (file);</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-desktop-item.c"<br>, 1203, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> ADDED_NONE = 0,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> ADDED_SINGLE,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> ADDED_ALL</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line">} AddedStatus;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line">append_all_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='keyword'>for</span> (l = args; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>char</span> *converted;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (!(converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>" "</span>)<span class='macro_popup'>(__builtin_constant_p (" ") ? __extension__ ({ const char * const<br> __val = (" "); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, " ", (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> escaped = escape_single_quotes (converted,</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>return</span> ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">append_first_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>char</span> *converted = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>for</span> (l = *arg_ptr; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>if</span> ((converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> *arg_ptr = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (!converted)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>return</span> added_status;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> escaped = escape_single_quotes (converted, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> added_status != ADDED_ALL ? ADDED_SINGLE : added_status;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">do_percent_subst (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *arg,</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> <span class='keyword'>char</span> *esc;</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cs;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>if</span> (arg[0] != '%' || arg[1] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='keyword'>switch</span> (arg[1]) {</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='keyword'>case</span> '%':</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>case</span> 'U':</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>case</span> 'N':</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> <span class='keyword'>case</span> 'f':</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> 'u':</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>case</span> 'd':</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>case</span> 'm':</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says this is deprecated</span></td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> <span class='comment'>* and replace with --miniicon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_MINI_ICON<span class='macro_popup'>"MiniIcon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--miniicon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--miniicon=") ? __extension__ ({ const<br> char * const __val = ("--miniicon="); g_string_append_len_inline<br> (str, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "--miniicon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>case</span> 'i':</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says replace with --icon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--icon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--icon=") ? __extension__ ({ const char<br> * const __val = ("--icon="); g_string_append_len_inline (str<br>, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !<br>(__val))) : (gssize) -1); }) : g_string_append_len_inline (str<br>, "--icon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='keyword'>case</span> 'c':</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>case</span> 'k':</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> esc = escape_single_quotes (item-&gt;location, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>case</span> 'v':</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_DEV<span class='macro_popup'>"Dev"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='comment'>/* Maintain special characters - e.g. "%20" */</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_ascii_isdigit (arg [1])<span class='macro_popup'>((g_ascii_table[(guchar) (arg [1])] &amp; G_ASCII_DIGIT) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line">expand_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> gboolean escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> gboolean single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> gboolean double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> GString *gs = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (escape) {</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\\') {</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot)</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> escape = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\'') {</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> single_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (single_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '"') {</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> double_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '%') {</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='keyword'>if</span> (do_percent_subst (item, p, gs,</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> single_quot, double_quot,</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> args, arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> added_status)) {</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"><span class='comment'>/*Functions in this code block should only ever be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line">sn_error_trap_push (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line">sn_error_trap_pop (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line">make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>int</span> i, j;</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>int</span> desktop_startup_id_len;</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, i + 2)<span class='macro_popup'>((char * *) g_malloc_n ((i + 2), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> desktop_startup_id_len = strlen (<span class='string_literal'>"DESKTOP_STARTUP_ID"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='keyword'>for</span> (i = 0, j = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp[i], <span class='string_literal'>"DESKTOP_STARTUP_ID"</span>, desktop_startup_id_len) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> retval[j] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> retval[j] = g_strdup_printf (<span class='string_literal'>"DESKTOP_STARTUP_ID=%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> sn_launcher_context_get_startup_id (sn_context));</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> retval[j] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"><span class='comment'>/* This should be fairly long, as it's confusing to users if a startup</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='comment'>* ends when it shouldn't (it appears that the startup failed, and</span></td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='comment'>* they have to relaunch the app). Also the timeout only matters when</span></td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> <span class='comment'>* there are bugs and apps don't end their own startup sequence.</span></td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>* This timeout is a "last resort" timeout that ignores whether the</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* startup sequence has shown activity or not. Marco and the</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>* tasklist have smarter, and correspondingly able-to-be-shorter</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='comment'>* timeouts. The reason our timeout is dumb is that we don't monitor</span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='comment'>* the sequence (don't use an SnMonitorContext)</span></td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> 30 /* seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span> (<span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> * 1000)</span></td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> GSList *contexts;</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> guint timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line">} StartupTimeoutData;</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">free_startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> g_slist_free_full (std-&gt;contexts, (GDestroyNotify) sn_launcher_context_unref);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (std-&gt;timeout_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_source_remove (std-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> g_free (std);</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line">startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GSList *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> <span class='keyword'>int</span> min_timeout;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> min_timeout = <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> gint64 now = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> GTimeVal now;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> g_get_current_time (&amp;now);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> tmp = std-&gt;contexts;</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>while</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> SnLauncherContext *sn_context = tmp-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> GSList *next = tmp-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> time_t tv_sec;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> suseconds_t tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context, &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> tv = (tv_sec * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>) + tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> elapsed = (<span class='keyword'>double</span>) (now - tv) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>long</span> tv_sec, tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> elapsed =</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> ((((<span class='keyword'>double</span>)now.tv_sec - tv_sec) * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span> +</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> (now.tv_usec - tv_usec))) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (elapsed &gt;= <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> std-&gt;contexts = g_slist_remove (std-&gt;contexts,</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> sn_launcher_context_complete (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> min_timeout = <span class='macro'>MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed))<span class='macro_popup'>(((min_timeout) &lt; (((30 * 1000) - elapsed))) ? (min_timeout<br>) : (((30 * 1000) - elapsed)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> tmp = next;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='comment'>/* we'll use seconds for the timeout */</span></td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> <span class='keyword'>if</span> (min_timeout &lt; 1000)</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> min_timeout = 1000;</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> <span class='keyword'>if</span> (std-&gt;contexts == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> std-&gt;timeout_id = g_timeout_add_seconds (min_timeout / 1000,</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> std);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>/* always remove this one, but we may have reinstalled another one. */</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line">add_startup_timeout (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> SnLauncherContext *sn_context)</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> StartupTimeoutData *data;</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> data = g_object_get_data (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> data = <span class='macro'>g_new (StartupTimeoutData, 1)<span class='macro_popup'>((StartupTimeoutData *) g_malloc_n ((1), sizeof (StartupTimeoutData<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> data-&gt;screen = screen;</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> data-&gt;contexts = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> data-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> data, free_startup_timeout);</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> sn_launcher_context_ref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> data-&gt;contexts = g_slist_prepend (data-&gt;contexts, sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> <span class='keyword'>if</span> (data-&gt;timeout_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> data-&gt;timeout_id = g_timeout_add_seconds (</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION - functions should only be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">stringify_uris (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> append_all_converted (str, URI_TO_STRING, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line">stringify_files (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> append_all_converted (str, URI_TO_LOCAL_PATH, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line">make_environment_for_screen (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>char</span> *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='keyword'>int</span> display_index = -1;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> <span class='keyword'>int</span> i, env_len;</td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> <span class='macro'>g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((screen)); GType __t = ((gdk_screen_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "GDK_IS_SCREEN (screen)"); return (((void*)0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp [i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> <span class='keyword'>for</span> (env_len = 0; envp [env_len]; env_len++)</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp [env_len], <span class='string_literal'>"DISPLAY"</span>, strlen (<span class='string_literal'>"DISPLAY"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> display_index = env_len;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, env_len + 1)<span class='macro_popup'>((char * *) g_malloc_n ((env_len + 1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> retval [env_len] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> display_name = <span class='macro'>g_strdup (gdk_display_get_name (display))<span class='macro_popup'>g_strdup_inline (gdk_display_get_name (display))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; env_len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (i == display_index)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> retval [i] = g_strconcat (<span class='string_literal'>"DISPLAY="</span>, display_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> retval [i] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='macro'>g_assert (i == env_len)<span class='macro_popup'>do { if (i == env_len) ; else g_assertion_message_expr ("MateDesktop"<br>, "mate-desktop-item.c", 1728, ((const char*) (__func__)), "i == env_len"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> g_free (display_name);</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line">dummy_child_watch (GPid pid,</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> gint status,</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='comment'>/* Nothing, this is just to ensure we don't double fork</span></td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='comment'>* and break pkexec:</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=675789</span></td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">ditem_execute (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec,</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> gboolean launch_only_one,</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> gboolean use_current_dir,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> gboolean append_uris,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gboolean append_paths,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> gboolean do_not_reap_child,</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span id="start97"><span class='keyword'>char</span></span> **free_me = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> <span class='keyword'>char</span> **real_argv;</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>int</span> i, <span id="start96"><span class="mrange"><span id="end97">ret</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>'ret' declared without an initial value</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='keyword'>char</span> **term_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='keyword'>int</span> term_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> GSList *vector_list;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> GSList *args, *arg_ptr;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> AddedStatus added_status;</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>char</span> **temp_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='keyword'>int</span> temp_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='keyword'>char</span> *new_exec, *uris, *temp;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='keyword'>char</span> *exec_locale;</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='keyword'>int</span> launched = 0;</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> GPid pid;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> SnLauncherContext *sn_context;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> SnDisplay *sn_display;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> <span id="start95"><span id="end96"><span class='keyword'>const</span></span></span> <span class='keyword'>char</span> *startup_class;</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> <span id="start93"><span class="mrange"><span id="start94"><span id="end94"><span id="end95"><span class='macro'>g_return_val_if_fail</span></span></span></span></span> (item, -1)<span class='macro_popup'>do { if ((item)) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "item"); return (-1); } } while<br> (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Assuming 'item' is non-null</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span id="start92"><span id="end93"><span class='keyword'>if</span></span></span> (<span id="start91"><span class="mrange"><span id="end92">item</span></span>-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming field 'type' is not equal to MATE_DESKTOP_ITEM_TYPE_APPLICATION</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> working_dir = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_PATH<span class='macro_popup'>"Path"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='keyword'>if</span> (working_dir &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> !g_file_test (working_dir, G_FILE_TEST_IS_DIR))</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span id="start90"><span id="end91"><span class='keyword'>if</span></span></span> (<span id="start89"><span id="end90"><span class='variable'>working_dir<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>5.1</div></td><td>'working_dir' is equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; <span id="start88"><span class="mrange"><span id="end89">!</span></span>use_current_dir</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgEvent" style="margin-left:36ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Assuming 'use_current_dir' is not equal to 0</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> working_dir = g_get_home_dir ();</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span id="start87"><span id="end88"><span class='keyword'>if</span></span></span> (<span id="start85"><span id="end86">mate_desktop_item_get_boolean</span></span> (<span id="start86"><span id="end87">item</span></span>, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>)) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *options =</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL_OPTIONS<span class='macro_popup'>"TerminalOptions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> <span class='keyword'>if</span> (options != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_shell_parse_argv (options,</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> &amp;term_argc,</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> &amp;term_argv,</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> <span class='comment'>/* error */</span>);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='comment'>/* ignore errors */</span></td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> mate_desktop_prepend_terminal_to_vector (&amp;term_argc, &amp;term_argv);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> <span id="start82"><span id="end83"><span id="start84"><span id="end85">args</span></span></span></span> = make_args (<span id="start83"><span id="end84">file_list</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> arg_ptr = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> <span id="start81"><span id="end82">GdkDisplay</span></span> *display = gdk_screen_get_display (gdk_screen_get_default());</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='keyword'>if</span> (<span id="start73"><span class="mrange"><span id="start74"><span id="end74"><span id="start75"><span id="end75"><span class="mrange"><span id="start76"><span id="end76"><span id="start77"><span id="end77"><span id="start78"><span id="end78"><span class="mrange"><span id="start79"><span id="end79"><span id="start80"><span id="end80"><span id="end81"><span class='macro'>GDK_IS_X11_DISPLAY</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming '__inst' is non-null</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Assuming field 'g_class' is null</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> <span class='keyword'>if</span> (screen)</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> sn_display = sn_display_new (<span class='macro'>GDK_DISPLAY_XDISPLAY (gdkdisplay)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdkdisplay))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> sn_error_trap_push,</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> sn_error_trap_pop);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='comment'>/* Only initiate notification if desktop file supports it.</span></td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='comment'>* (we could avoid setting up the SnLauncherContext if we aren't going</span></td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='comment'>* to initiate, but why bother)</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> startup_class = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"StartupWMClass"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> <span class='keyword'>if</span> (startup_class ||</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> mate_desktop_item_get_boolean (item, <span class='string_literal'>"StartupNotify"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> sn_context = sn_launcher_context_new (sn_display,</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> screen ? gdk_x11_screen_get_screen_number (screen) :</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> <span class='macro'>DefaultScreen (GDK_DISPLAY_XDISPLAY (gdkdisplay))<span class='macro_popup'>(((_XPrivDisplay)((gdk_x11_display_get_xdisplay (gdkdisplay))<br>))-&gt;default_screen)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_GENERIC_NAME<span class='macro_popup'>"GenericName"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> <span class='keyword'>if</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='keyword'>char</span> *description;</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> sn_launcher_context_set_name (sn_context, name);</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> description = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Starting %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Starting %s"))</span></span>, name);</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> sn_launcher_context_set_description (sn_context, description);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> g_free (description);</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> icon = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>if</span> (icon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> sn_launcher_context_set_icon_name (sn_context, icon);</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> sn_launcher_context_set_workspace (sn_context, workspace);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (startup_class != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> sn_launcher_context_set_wmclass (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> startup_class);</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> <span id="start72"><span id="end73">sn_context</span></span> = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> <span id="start71"><span id="end72">sn_display</span></span> = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> <span id="start70"><span id="end71"><span class='keyword'>if</span></span></span> (<span id="start69"><span class="mrange"><span id="end70">screen</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Assuming 'screen' is null</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> envp = make_environment_for_screen (screen, envp);</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> <span id="start66"><span id="end67"><span id="start68"><span id="end69">exec_locale</span></span></span></span> = g_filename_from_utf8 (<span id="start67"><span id="end68">exec</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> <span id="start65"><span id="end66"><span class='keyword'>if</span></span></span> (<span id="start64"><span class="mrange"><span id="end65">exec_locale</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Assuming 'exec_locale' is not equal to NULL</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> exec_locale = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path32" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">32</div></td><td><div class="PathNav"><a href="#Path31" title="Previous event (31)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path33" title="Next event (33)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> <span id="start63"><span id="end64">added_status</span></span> = ADDED_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> new_exec = expand_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> exec_locale,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> args, &amp;arg_ptr, &amp;added_status);</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span id="start62"><span id="end63"><span class='keyword'>if</span></span></span> (<span id="start61"><span id="end62"><span class='variable'>launched<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>17.1</div></td><td>'launched' is equal to 0</td></tr></tbody></table></span></span></span> == 0 &amp;&amp; <span id="start60"><span id="end61"><span class='variable'>added_status<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>17.2</div></td><td>'added_status' is equal to ADDED_NONE</td></tr></tbody></table></span></span></span> == ADDED_NONE &amp;&amp; <span id="start59"><span class="mrange"><span id="end60">append_uris</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgEvent" style="margin-left:68ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Assuming 'append_uris' is 0</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> uris = stringify_uris (args);</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> <span class='comment'>/* append_uris and append_paths are mutually exlusive */</span></td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span id="start58"><span id="end59"><span class='keyword'>if</span></span></span> (<span id="start57"><span id="end58"><span class='variable'>launched<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>18.1</div></td><td>'launched' is equal to 0</td></tr></tbody></table></span></span></span> == 0 &amp;&amp; <span id="start56"><span id="end57"><span class='variable'>added_status<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>18.2</div></td><td>'added_status' is equal to ADDED_NONE</td></tr></tbody></table></span></span></span> == ADDED_NONE &amp;&amp; <span id="start55"><span class="mrange"><span id="end56">append_paths</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgEvent" style="margin-left:68ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Assuming 'append_paths' is 0</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> uris = stringify_files (args);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> <span id="start54"><span id="end55"><span class='keyword'>if</span></span></span> (<span id="start53"><span id="end54"><span class='variable'>launched<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>19.1</div></td><td>'launched' is <= 0</td></tr></tbody></table></span></span></span> &gt; 0 &amp;&amp; added_status == ADDED_NONE) {</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span id="start52"><span id="end53"><span class='keyword'>if</span></span></span> ( <span id="start51"><span class="mrange"><span id="end52">!</span></span> g_shell_parse_argv (new_exec,</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgEvent" style="margin-left:22ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> <span class="mrange">&amp;temp_argc, &amp;temp_argv, error)</span>) {</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> <span class='comment'>/* The error now comes from g_shell_parse_argv */</span></td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> <span id="start48"><span id="end49"><span id="start50"><span id="end51">g_free</span></span></span></span> (<span id="start49"><span id="end50">new_exec</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> vector_list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> <span id="start47"><span id="end48"><span class='keyword'>for</span></span></span>(i = 0; i &lt; term_argc; i++)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 1939</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='macro'>g_strdup (term_argv[i])<span class='macro_popup'>g_strdup_inline (term_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span id="start46"><span id="end47"><span class='keyword'>for</span></span></span>(<span id="start45"><span id="end46">i</span></span> = 0; <span id="start44"><span class="mrange"><span id="end45">i</span></span> &lt; temp_argc</span>; i++)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgEvent" style="margin-left:28ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Assuming 'i' is &gt;= 'temp_argc'</td><td><div class="PathNav"><a href="#Path24" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path24" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 1943</td><td><div class="PathNav"><a href="#Path25" title="Next event (25)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> <span class='macro'>g_strdup (temp_argv[i])<span class='macro_popup'>g_strdup_inline (temp_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> <span id="start41"><span id="end42"><span id="start43"><span id="end44">g_strfreev</span></span></span></span> (<span id="start42"><span id="end43">temp_argv</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> real_argv = list_to_vector (vector_list);</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_slist_free_full (vector_list, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span id="start40"><span id="end41"><span class='keyword'>if</span></span></span> (<span id="start39"><span id="end40"><span class='variable'>sn_context<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>24.1</div></td><td>'sn_context' is equal to NULL</td></tr></tbody></table></span></span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> !sn_launcher_context_get_initiated (sn_context)) {</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> <span class='comment'>/* This means that we always use the first real_argv[0]</span></td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> <span class='comment'>* we select for the "binary name", but it's probably</span></td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='comment'>* OK to do that. Binary name isn't super-important</span></td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> <span class='comment'>* anyway, and we can't initiate twice, and we</span></td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> <span class='comment'>* must initiate prior to fork/exec.</span></td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> sn_launcher_context_set_binary_name (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> real_argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='keyword'>if</span> (item-&gt;launch_time &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> launch_time = gdk_x11_display_get_user_time (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> sn_launcher_context_initiate (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> g_get_prgname () ? g_get_prgname () : <span class='string_literal'>"unknown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> real_argv[0],</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> launch_time);</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='comment'>/* Don't allow accidental reuse of same timestamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> ((MateDesktopItem *)item)-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> envp = make_spawn_environment_for_sn_context (sn_context, envp);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span id="start32"><span id="end33"><span id="start35"><span id="end36"><span id="start38"><span id="end39"><span class='keyword'>if</span></span></span></span></span></span></span> ( <span id="start30"><span class="mrange"><span id="end31">!</span></span> g_spawn_async (working_dir,</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path28" class="msg msgEvent" style="margin-left:22ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">28</div></td><td><div class="PathNav"><a href="#Path27" title="Previous event (27)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path29" title="Next event (29)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path29" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">29</div></td><td><div class="PathNav"><a href="#Path28" title="Previous event (28)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path30" title="Next event (30)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> <span class="mrange">real_argv,</td></tr></span>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> <span class="mrange">envp,</td></tr></span>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> <span class="mrange">(<span id="end35"><span id="start36"><span id="start37"><span class="mrange"><span id="end38">do_not_reap_child</span></span></span></span></span> ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH <span class='comment'>/* flags */</span>,</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path25" class="msg msgEvent" style="margin-left:40ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">25</div></td><td><div class="PathNav"><a href="#Path24" title="Previous event (24)">&#x2190;</a></div></td><td>Assuming 'do_not_reap_child' is 0</td><td><div class="PathNav"><a href="#Path26" title="Next event (26)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path26" class="msg msgControl" style="margin-left:40ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">26</div></td><td><div class="PathNav"><a href="#Path25" title="Previous event (25)">&#x2190;</a></div></td><td>'?' condition is false</td><td><div class="PathNav"><a href="#Path27" title="Next event (27)">&#x2192;</a></div></td></tr></table></div></td></tr></span>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class="mrange"><span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func */</span></td></tr></span>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class="mrange"><span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func_data */</span></td></tr></span>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> <span class="mrange">(<span id="end32"><span id="start33"><span id="start34"><span id="end37"><span class='variable'>do_not_reap_child<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>26.1</div></td><td>'do_not_reap_child' is 0</td></tr></tbody></table></span></span></span></span></span> ? &amp;pid : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='comment'>/* child_pid */</span>,</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path27" class="msg msgControl" style="margin-left:40ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">27</div></td><td><div class="PathNav"><a href="#Path26" title="Previous event (26)">&#x2190;</a></div></td><td>'?' condition is false</td><td><div class="PathNav"><a href="#Path28" title="Next event (28)">&#x2192;</a></div></td></tr></table></div></td></tr></span>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> <span class="mrange"><span id="start31"><span id="end34">error</span></span>)</span>) {</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='comment'>/* The error was set for us,</span></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='comment'>* we just can't launch this thingie */</span></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> } <span class='keyword'>else</span> <span id="start29"><span id="end30"><span class='keyword'>if</span></span></span> (<span id="start28"><span id="end29"><span class='variable'>do_not_reap_child<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>29.1</div></td><td>'do_not_reap_child' is 0</td></tr></tbody></table></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path30" class="msg msgControl" style="margin-left:24ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">30</div></td><td><div class="PathNav"><a href="#Path29" title="Previous event (29)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path31" title="Next event (31)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> g_child_watch_add (pid, dummy_child_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> <span id="start27"><span id="end28">launched</span></span> ++;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> <span id="start26"><span id="end27"><span class='keyword'>if</span></span></span> (<span id="start25"><span class="mrange"><span id="end26">arg_ptr</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path31" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">31</div></td><td><div class="PathNav"><a href="#Path30" title="Previous event (30)">&#x2190;</a></div></td><td>Assuming 'arg_ptr' is equal to NULL</td><td><div class="PathNav"><a href="#Path32" title="Next event (32)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> arg_ptr = arg_ptr-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> <span class='comment'>/* rinse, repeat until we run out of arguments (That</span></td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> <span class='comment'>* is if we were adding singles anyway) */</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> } <span class='keyword'>while</span> (<span id="start24"><span id="end25"><span class='variable'>added_status<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>31.1</div></td><td>'added_status' is not equal to ADDED_SINGLE</td></tr></tbody></table></span></span></span> == ADDED_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> ! launch_only_one);</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> <span id="start21"><span id="end22"><span id="start23"><span id="end24">g_free</span></span></span></span> (<span id="start22"><span id="end23">exec_locale</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> <span id="start20"><span id="end21"><span class='keyword'>if</span></span></span> ((<span id="start19"><span id="end20"><span class='variable'>sn_context<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>32.1</div></td><td>'sn_context' is equal to NULL</td></tr></tbody></table></span></span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)){</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> sn_launcher_context_complete (sn_context); <span class='comment'>/* end sequence */</span></td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> add_startup_timeout (screen ? screen :</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> gdk_display_get_default_screen (gdk_display_get_default ()),</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (<span id="start9"><span class="mrange"><span id="start10"><span id="end10"><span id="start11"><span id="end11"><span id="start12"><span id="end12"><span id="start13"><span id="end13"><span id="start14"><span id="end14"><span id="start15"><span id="end15"><span id="start16"><span id="end16"><span id="start17"><span id="end17"><span id="start18"><span id="end18"><span id="end19"><span class='macro'>GDK_IS_X11_DISPLAY</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path33" class="msg msgControl" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">33</div></td><td><div class="PathNav"><a href="#Path32" title="Previous event (32)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path34" title="Next event (34)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path34" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">34</div></td><td><div class="PathNav"><a href="#Path33" title="Previous event (33)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path35" title="Next event (35)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path35" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">35</div></td><td><div class="PathNav"><a href="#Path34" title="Previous event (34)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path36" title="Next event (36)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> sn_display_unref (sn_display);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION */</span></td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> <span id="start6"><span id="end7"><span id="start8"><span id="end9">free_args</span></span></span></span> (<span id="start7"><span id="end8">args</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span id="start5"><span id="end6"><span class='keyword'>if</span></span></span> (<span id="start4"><span id="end5"><span class='variable'>term_argv<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>35.1</div></td><td>'term_argv' is null</td></tr></tbody></table></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path36" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">36</div></td><td><div class="PathNav"><a href="#Path35" title="Previous event (35)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path37" title="Next event (37)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> g_strfreev (term_argv);</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span id="start3"><span id="end4"><span class='keyword'>if</span></span></span> (<span id="start2"><span id="end3"><span class='variable'>free_me<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>36.1</div></td><td>'free_me' is null</td></tr></tbody></table></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path37" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">37</div></td><td><div class="PathNav"><a href="#Path36" title="Previous event (36)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#EndPath" title="Next event (38)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span id="end0"><span id="start1"><span id="end2"><span class='keyword'>return</span></span></span></span> <span class="mrange"><span id="start0"><span id="end1">ret</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">38</div></td><td><div class="PathNav"><a href="#Path37" title="Previous event (37)">&#x2190;</a></div></td><td>Undefined or garbage value returned to caller</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"><span class='comment'>/* strip any trailing &amp;, return FALSE if bad things happen and</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='comment'>we end up with an empty string */</span></td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">strip_the_amp (<span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> size_t exec_len;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> <span class='macro'>g_strstrip (exec)<span class='macro_popup'>g_strchomp (g_strchug (exec))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> exec_len = strlen (exec);</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='comment'>/* kill any trailing '&amp;' */</span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='keyword'>if</span> (exec[exec_len-1] == '&amp;') {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> exec[exec_len-1] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> g_strchomp (exec);</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='comment'>/* can't exactly launch an empty thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>char</span> *the_exec;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> exec = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='comment'>/* This is a URL, so launch it as a url */</span></td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *url;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> url = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> <span class='comment'>/* Mate panel used to put this in Exec */</span></td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0'))</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> url = exec;</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0')) {</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_URL,</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No URL to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No URL to launch"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> retval = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> url,</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> <span class='macro'>GDK_CURRENT_TIME<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='keyword'>return</span> retval ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='comment'>/* check the type, if there is one set */</span></td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type != MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NOT_LAUNCHABLE,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Not a launchable item"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Not a launchable item"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> exec[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='comment'>/* make a new copy and get rid of spaces */</span></td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> the_exec = <span class='macro'>g_alloca (strlen (exec) + 1)<span class='macro_popup'>__builtin_alloca (strlen (exec) + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> g_strlcpy (the_exec, exec, strlen (exec) + 1);</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> ( ! strip_the_amp (the_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_BAD_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Bad command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Bad command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> ret = ditem_execute (item, the_exec, file_list, screen, workspace, envp,</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_ONLY_ONE),</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_USE_CURRENT_DIR),</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_URIS),</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_PATHS),</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_DO_NOT_REAP_CHILD),</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='comment'>* mate_desktop_item_launch:</span></td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='comment'>* This function runs the program listed in the specified 'item',</span></td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>* optionally appending additional arguments to its command line. It uses</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* #g_shell_parse_argv to parse the the exec string into a vector which is</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>* then passed to #g_spawn_async for execution. This can return all</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* the errors from MateURL, #g_shell_parse_argv and #g_spawn_async,</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* in addition to it's own. The files are</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* only added if the entry defines one of the standard % strings in it's</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>* Exec field.</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line">mate_desktop_item_launch (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> item, file_list, flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> <span class='comment'>* @envp: child's environment, or %NULL to inherit parent's</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line">mate_desktop_item_launch_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_on_screen:</span></td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span class='comment'>* @screen: the %GdkScreen on which the application should be launched</span></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span class='comment'>* @workspace: the workspace on which the app should be launched (-1 for current)</span></td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* additionally attempts to launch the application on a given screen</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>* and workspace.</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">mate_desktop_item_launch_on_screen (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> screen, workspace, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='comment'>* mate_desktop_item_drop_uri_list:</span></td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>* A list of files or urls dropped onto an icon, the proper (Url or File)</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> <span class='comment'>* exec is run you can pass directly string that you got as the</span></td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> <span class='comment'>* text/uri-list. This just parses the list and calls</span></td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line">mate_desktop_item_drop_uri_list (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_drop_uri_list_with_env (item, uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"><span class='comment'>* mate_desktop_item_drop_uri_list_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"><span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"><span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"><span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>* @envp: child's environment</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"><span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"><span class='comment'>* See mate_desktop_item_drop_uri_list for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"><span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"><span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"><span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"><span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line">mate_desktop_item_drop_uri_list_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='keyword'>char</span> **uris;</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> uris = g_uri_list_extract_uris (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='keyword'>for</span> (uri = uris[0]; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; uri++) {</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> list = g_list_prepend (list, uri);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> list = g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> ret = mate_desktop_item_launch_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> item, list, flags, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> g_strfreev (uris);</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> g_list_free (list);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line">exec_exists (<span class='keyword'>const</span> <span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='keyword'>if</span> (g_path_is_absolute (exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='keyword'>if</span> (access (exec, <span class='macro'>X_OK<span class='macro_popup'>1</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>char</span> *tryme;</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> tryme = g_find_program_in_path (exec);</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> <span class='keyword'>if</span> (tryme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> g_free (tryme);</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> <span class='comment'>* mate_desktop_item_exists:</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* Attempt to figure out if the program that can be executed by this item</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>* actually exists. First it tries the TryExec attribute to see if that</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* contains a program that is in the path. Then if there is no such</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>* attribute, it tries the first word of the Exec attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> <span class='comment'>* Returns: A boolean, %TRUE if it exists, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">mate_desktop_item_exists (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *try_exec;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> try_exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TRY_EXEC<span class='macro_popup'>"TryExec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> <span class='keyword'>if</span> (try_exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> ! exec_exists (try_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exe;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (exec, &amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='keyword'>if</span> (argc &lt; 1) {</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> exe = argv[0];</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> <span class='keyword'>if</span> ( ! exec_exists (exe)) {</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> <span class='comment'>* mate_desktop_item_get_entry_type:</span></td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='comment'>* Gets the type attribute (the 'Type' field) of the item. This should</span></td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> <span class='comment'>* usually be 'Application' for an application, but it can be 'Directory'</span></td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='comment'>* for a directory description. There are other types available as well.</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> <span class='comment'>* The type usually indicates how the desktop item should be handeled and</span></td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='comment'>* how the 'Exec' field should be handeled.</span></td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='comment'>* Returns: The type of the specified 'item'. The returned</span></td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='comment'>* memory remains owned by the MateDesktopItem and should not be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line">MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line">mate_desktop_item_get_entry_type (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, 0)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>return</span> item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line">mate_desktop_item_set_entry_type (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> MateDesktopItemType type)</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> item-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_NULL:</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION:</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Application"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_LINK:</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE:</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"FSDevice"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"MimeType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY:</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE:</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Service"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"ServiceType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> <span class='comment'>* mate_desktop_item_get_file_status:</span></td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='comment'>* This function checks the modification time of the on-disk file to</span></td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> <span class='comment'>* see if it is more recent than the in-memory data.</span></td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> <span class='comment'>* Returns: An enum value that specifies whether the item has changed since being loaded.</span></td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line">MateDesktopItemStatus</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line">mate_desktop_item_get_file_status (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> MateDesktopItemStatus retval;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> retval = MATE_DESKTOP_ITEM_UNCHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_has_attribute (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> retval = MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (((guint64) item-&gt;mtime) &lt; g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> retval = MATE_DESKTOP_ITEM_CHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='comment'>* mate_desktop_item_find_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> <span class='comment'>* @icon: icon name, something you'd get out of the Icon key</span></td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>* @desired_size: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='comment'>* is not an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line">mate_desktop_item_find_icon (GtkIconTheme *icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon,</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='keyword'>int</span> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='keyword'>int</span> flags)</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> GtkIconInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='keyword'>char</span> *full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='macro'>g_return_val_if_fail (icon_theme == NULL ||<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='macro'>GTK_IS_ICON_THEME (icon_theme), NULL)<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || strcmp(icon,<span class='string_literal'>""</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_path_is_absolute (icon)) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> <span class='keyword'>if</span> (g_file_test (icon, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> <span class='keyword'>char</span> *icon_no_extension;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='keyword'>if</span> (icon_theme == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> icon_theme = gtk_icon_theme_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> icon_no_extension = <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> p = strrchr (icon_no_extension, '.');</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='keyword'>if</span> (p &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> (strcmp (p, <span class='string_literal'>".png"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> strcmp (p, <span class='string_literal'>".xpm"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> strcmp (p, <span class='string_literal'>".svg"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> *p = 0;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> info = gtk_icon_theme_lookup_icon (icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> icon_no_extension,</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> full = <span class='macro'>g_strdup (gtk_icon_info_get_filename (info))<span class='macro_popup'>g_strdup_inline (gtk_icon_info_get_filename (info))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> g_free (icon_no_extension);</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='keyword'>return</span> full;</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> <span class='comment'>* mate_desktop_item_get_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* is not set as an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line">mate_desktop_item_get_icon (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> GtkIconTheme *icon_theme)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='comment'>/* maybe this function should be deprecated in favour of find icon</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> <span class='comment'>* -George */</span></td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> icon = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_find_icon (icon_theme, icon,</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> 48 <span class='comment'>/* desired_size */</span>,</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> 0 <span class='comment'>/* flags */</span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* mate_desktop_item_get_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Returns: The file location associated with 'item'.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">mate_desktop_item_get_location (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>return</span> item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='comment'>* @location: A uri string specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item.</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line">mate_desktop_item_set_location (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *location)</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> strcmp (item-&gt;location, location) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> item-&gt;location = <span class='macro'>g_strdup (location)<span class='macro_popup'>g_strdup_inline (location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='comment'>/* This is ugly, but useful internally */</span></td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>if</span> (item-&gt;mtime != <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location) {</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>if</span> (g_file_info_has_attribute (info,</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> item-&gt;mtime = g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='comment'>/* Make sure that save actually saves */</span></td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location_file:</span></td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='comment'>* @file: A local filename specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item to the given @file.</span></td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line">mate_desktop_item_set_location_file (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *file)</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> mate_desktop_item_set_location_gfile (item, gfile);</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">mate_desktop_item_set_location_gfile (MateDesktopItem *item, GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mate_desktop_item_set_location (item, uri);</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> <span class='comment'>* Reading/Writing different sections, NULL is the standard section</span></td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line">mate_desktop_item_attr_exists (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> <span class='comment'>* String type</span></td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line">mate_desktop_item_get_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line">mate_desktop_item_set_string (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> set (item, attr, value);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> item-&gt;type = type_from_string (value);</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='comment'>* LocaleString type</span></td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>return</span> lookup_best_locale(item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring_lang(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr, <span class='keyword'>const</span> <span class='keyword'>char</span>* language)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>return</span> lookup_locale(item, attr, language);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='comment'>* mate_desktop_item_get_string_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> <span class='comment'>* @attr: An attribute name</span></td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='comment'>* Returns the current locale that is used for the given attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> <span class='comment'>* This might not be the same for all attributes. For example, if your</span></td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='comment'>* locale is "en_US.ISO8859-1" but attribute FOO only has "en_US" then</span></td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> <span class='comment'>* that would be returned for attr = "FOO". If attribute BAR has</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* "en_US.ISO8859-1" then that would be returned for "BAR".</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* Returns: a string equal to the current locale or NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>* if the attribute is invalid or there is no matching locale.</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">mate_desktop_item_get_attr_locale (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> value = lookup_locale (item, attr, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">mate_desktop_item_get_languages (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>char</span> *language = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>if</span> (attr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> lookup_locale (item, attr, language) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> list = g_list_prepend (list, language);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line">get_language (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>/* find first without encoding */</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='keyword'>if</span> (strchr (langs_pointer[i], '.') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_desktop_item_set_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> set_locale (item, attr, get_language (), value);</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line">mate_desktop_item_set_localestring_lang (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> set_locale (item, attr, language, value);</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_desktop_item_clear_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> <span class='keyword'>for</span> (l = item-&gt;languages; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> set_locale (item, attr, l-&gt;data, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> set (item, attr, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='comment'>* Strings, Regexps types</span></td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">mate_desktop_item_get_strings (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> <span class='keyword'>return</span> g_strsplit (value, <span class='string_literal'>";"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">mate_desktop_item_set_strings (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> <span class='keyword'>char</span> **strings)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='keyword'>char</span> *str, *str2;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> str = g_strjoinv (<span class='string_literal'>";"</span>, strings);</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> str2 = g_strconcat (str, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> set (item, attr, str2);</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> g_free (str2);</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='comment'>* Boolean type</span></td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line">mate_desktop_item_get_boolean (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> <span class='keyword'>return</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> atoi (value) != 0);</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line">mate_desktop_item_set_boolean (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean value)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> set (item, attr, value ? <span class='string_literal'>"true"</span> : <span class='string_literal'>"false"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line">mate_desktop_item_set_launch_time (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> guint32 timestamp)</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> item-&gt;launch_time = timestamp;</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> <span class='comment'>* Clearing attributes</span></td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line">mate_desktop_item_clear_section (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> sec = find_section (item, section);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> <span class='keyword'>if</span> (sec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> g_free (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> g_list_free (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (li = sec-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> sec-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_list_free (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"><span class='comment'>/************************************************************</span></td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='comment'>* Parser: *</span></td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='comment'>************************************************************/</span></td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">standard_is_boolean (<span class='keyword'>const</span> <span class='keyword'>char</span> * key)</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> <span class='keyword'>static</span> GHashTable *bools = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='keyword'>if</span> (bools == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> bools = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (bools, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line">standard_is_strings (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>static</span> GHashTable *strings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>if</span> (strings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> strings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (strings, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='comment'>/* If no need to cannonize, returns NULL */</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line">cannonize (<span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='keyword'>if</span> (standard_is_boolean (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> <span class='keyword'>if</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> atoi (value) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"true"</span>)<span class='macro_popup'>g_strdup_inline ("true")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"false"</span>)<span class='macro_popup'>g_strdup_inline ("false")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (standard_is_strings (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> <span class='keyword'>int</span> len = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>if</span> (len == 0 || value[len-1] != ';') {</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> <span class='keyword'>return</span> g_strconcat (value, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='comment'>/* XXX: Perhaps we should canonize numeric values as well, but this</span></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span class='comment'>* has caused some subtle problems before so it needs to be done</span></td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='comment'>* carefully if at all */</span></td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">decode_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='keyword'>char</span> *p = g_malloc (strlen (s) + 1);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> <span class='keyword'>char</span> *q = p;</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='keyword'>if</span> (*s == '\\'){</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> <span class='keyword'>switch</span> (*(++s)){</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='keyword'>case</span> 's':</td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> *p++ = ' ';</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> <span class='keyword'>case</span> 't':</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> *p++ = '\t';</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> *p++ = '\n';</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> <span class='keyword'>case</span> 'r':</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> *p++ = '\r';</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">escape_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> <span class='keyword'>char</span> *return_value, *p;</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *q;</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>int</span> len = 0;</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup(<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> q = s;</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span class='keyword'>while</span> (*q){</td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span class='keyword'>if</span> (strchr (<span class='string_literal'>"\n\r\t\\"</span>, *q) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> q++;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> return_value = p = (<span class='keyword'>char</span> *) g_malloc (len + 1);</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> <span class='keyword'>switch</span> (*s){</td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='keyword'>case</span> '\t':</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> *p++ = 't';</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> <span class='keyword'>case</span> '\n':</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> *p++ = 'n';</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>case</span> '\r':</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> *p++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> <span class='keyword'>return</span> return_value;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line">check_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> GIConv cd = g_iconv_open (<span class='string_literal'>"UTF-8"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> ((GIConv)-1 == cd)</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> g_iconv_close (cd);</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line">insert_locales (GHashTable *encodings, <span class='keyword'>char</span> *enc, ...)</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='macro'>va_start (args, enc)<span class='macro_popup'>__builtin_va_start(args, enc)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>for</span> (;;) {</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> g_hash_table_insert (encodings, s, enc);</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"><span class='comment'>/* make a standard conversion table from the desktop standard spec */</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">init_encodings (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GHashTable *encodings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> <span class='comment'>/* "C" is plain ascii */</span></td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ASCII"</span>, <span class='string_literal'>"C"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ARMSCII-8"</span>, <span class='string_literal'>"by"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"BIG5"</span>, <span class='string_literal'>"zh_TW"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"CP1251"</span>, <span class='string_literal'>"be"</span>, <span class='string_literal'>"bg"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"EUC-CN"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-CN"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GB2312"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-JP"</span>, <span class='string_literal'>"ja"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-KR"</span>, <span class='string_literal'>"ko"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GEORGIAN-PS"</span>, <span class='string_literal'>"ka"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-1"</span>, <span class='string_literal'>"br"</span>, <span class='string_literal'>"ca"</span>, <span class='string_literal'>"da"</span>, <span class='string_literal'>"de"</span>, <span class='string_literal'>"en"</span>, <span class='string_literal'>"es"</span>, <span class='string_literal'>"eu"</span>, <span class='string_literal'>"fi"</span>, <span class='string_literal'>"fr"</span>, <span class='string_literal'>"gl"</span>, <span class='string_literal'>"it"</span>, <span class='string_literal'>"nl"</span>, <span class='string_literal'>"wa"</span>, <span class='string_literal'>"no"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"sv"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-2"</span>, <span class='string_literal'>"cs"</span>, <span class='string_literal'>"hr"</span>, <span class='string_literal'>"hu"</span>, <span class='string_literal'>"pl"</span>, <span class='string_literal'>"ro"</span>, <span class='string_literal'>"sk"</span>, <span class='string_literal'>"sl"</span>, <span class='string_literal'>"sq"</span>, <span class='string_literal'>"sr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-3"</span>, <span class='string_literal'>"eo"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-5"</span>, <span class='string_literal'>"mk"</span>, <span class='string_literal'>"sp"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-7"</span>, <span class='string_literal'>"el"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-9"</span>, <span class='string_literal'>"tr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-13"</span>, <span class='string_literal'>"lt"</span>, <span class='string_literal'>"lv"</span>, <span class='string_literal'>"mi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-14"</span>, <span class='string_literal'>"ga"</span>, <span class='string_literal'>"cy"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-15"</span>, <span class='string_literal'>"et"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-R"</span>, <span class='string_literal'>"ru"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-U"</span>, <span class='string_literal'>"uk"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"TCVN-5712"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN-5712"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TIS-620"</span>, <span class='string_literal'>"th"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "VISCII", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>return</span> encodings;</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line">get_encoding_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span class='keyword'>char</span> lang[3];</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *encoding;</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span class='keyword'>static</span> GHashTable *encodings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='comment'>/* if locale includes encoding, use it */</span></td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> encoding = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> encoding+1;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='keyword'>if</span> (encodings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> encodings = init_encodings ();</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='comment'>/* first try the entire locale (at this point ll_CC) */</span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> encoding = g_hash_table_lookup (encodings, locale);</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>return</span> encoding;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='comment'>/* Try just the language */</span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> strncpy (lang, locale, 2);</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> lang[2] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (encodings, lang);</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"><span class='keyword'>static</span> Encoding</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">get_encoding (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='keyword'>char</span> buf [<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> gboolean all_valid_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='keyword'>if</span> (strncmp (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> buf,</td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='keyword'>char</span> *p = &amp;buf[strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)];</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='keyword'>if</span> (*p != '=')</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"UTF-8"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"Legacy-Mixed"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='comment'>/* According to the spec we're not supposed</span></td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='comment'>* to read a file like this */</span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='keyword'>return</span> ENCODING_UNKNOWN;</td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (<span class='string_literal'>"[KDE Desktop Entry]"</span>, buf) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='comment'>/* don't break yet, we still want to support</span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='comment'>* Encoding even here */</span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8 &amp;&amp; ! g_utf8_validate (buf, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> all_valid_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='keyword'>if</span> (old_kde)</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> <span class='comment'>/* try to guess by location */</span></td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strstr (rb-&gt;uri, <span class='string_literal'>"mate/apps/"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> <span class='comment'>/* old mate */</span></td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> <span class='comment'>/* A dilemma, new KDE files are in UTF-8 but have no Encoding</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> <span class='comment'>* info, at this time we really can't tell. The best thing to</span></td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='comment'>* do right now is to just assume UTF-8 if the whole file</span></td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> <span class='comment'>* validates as utf8 I suppose */</span></td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8)</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line">decode_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *value, Encoding encoding, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* if legacy mixed, then convert */</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_LEGACY_MIXED) {</td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *char_encoding = get_encoding_from_locale (locale);</td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>char</span> *utf8_string;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='keyword'>if</span> (char_encoding == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='keyword'>if</span> (strcmp (char_encoding, <span class='string_literal'>"ASCII"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> utf8_string = g_convert (value, -1, <span class='string_literal'>"UTF-8"</span>, char_encoding,</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='keyword'>if</span> (utf8_string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> retval = decode_string_and_dup (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> g_free (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='comment'>/* if utf8, then validate */</span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_UTF8) {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='keyword'>if</span> ( ! g_utf8_validate (value, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='comment'>/* invalid utf8, ignore this key */</span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='comment'>/* Meaning this is not a localized string */</span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">snarf_locale_from_key (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *brace;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='keyword'>char</span> *locale, *p;</td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> brace = strchr (key, '[');</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='keyword'>if</span> (brace == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> locale = <span class='macro'>g_strdup (brace + 1)<span class='macro_popup'>g_strdup_inline (brace + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (*locale == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> p = strchr (locale, ']');</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> <span class='keyword'>return</span> locale;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line">insert_key (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> Section *cur_section,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> Encoding encoding,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value,</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> gboolean old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> gboolean no_translations)</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> <span class='keyword'>char</span> *k;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> <span class='keyword'>char</span> *val;</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"> <span class='comment'>/* we always store everything in UTF-8 */</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> val = <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> <span class='keyword'>char</span> *locale = snarf_locale_from_key (key);</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> <span class='comment'>/* If we're ignoring translations */</span></td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> <span class='keyword'>if</span> (no_translations &amp;&amp; locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> val = decode_string (value, encoding, locale);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* Ignore this key, it's whacked */</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='keyword'>if</span> (val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> g_strchomp (val);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='comment'>/* For old KDE entries, we can also split by a comma</span></td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='comment'>* on sort order, so convert to semicolons */</span></td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> <span class='keyword'>if</span> (old_kde &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> strchr (val, ';') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> <span class='keyword'>for</span> (i = 0; val[i] != '\0'; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> <span class='keyword'>if</span> (val[i] == ',')</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> val[i] = ';';</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> <span class='comment'>/* Check some types, not perfect, but catches a lot</span></td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> <span class='comment'>* of things */</span></td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> <span class='keyword'>char</span> *cannon = cannonize (key, val);</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> <span class='keyword'>if</span> (cannon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> val = cannon;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> <span class='comment'>/* Take care of the language part */</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> <span class='comment'>/* Whack C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> p = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> <span class='keyword'>char</span> *p, *brace;</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> <span class='comment'>/* Whack the encoding part */</span></td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> p = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> item-&gt;languages = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> (item-&gt;languages, locale);</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> <span class='comment'>/* Whack encoding from encoding in the key */</span></td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> brace = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> p = strchr (brace, '.');</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> *p = ']';</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line"> *(p+1) = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, k) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> item-&gt;keys = g_list_prepend (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> <span class='macro'>g_strdup (k)<span class='macro_popup'>g_strdup_inline (k)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> g_hash_table_replace (item-&gt;main_hash, k, val);</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> cur_section-&gt;name, k);</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, full) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> cur_section-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> g_list_prepend (cur_section-&gt;keys, k);</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> full, val);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line">setup_type (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type = g_hash_table_lookup (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> <span class='keyword'>char</span> *base = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> <span class='keyword'>if</span> (base != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> strcmp (base, <span class='string_literal'>".directory"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> <span class='comment'>/* This gotta be a directory */</span></td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"Directory"</span>)<span class='macro_popup'>g_strdup_inline ("Directory")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> item-&gt;type = type_from_string (type);</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"><span class='comment'>/* fallback to find something suitable for C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line">try_english_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>char</span> *locales[] = { <span class='string_literal'>"en_US"</span>, <span class='string_literal'>"en_GB"</span>, <span class='string_literal'>"en_AU"</span>, <span class='string_literal'>"en"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> <span class='keyword'>for</span> (i = 0; locales[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> str = <span class='macro'>g_strdup (lookup_locale (item, key, locales[i]))<span class='macro_popup'>g_strdup_inline (lookup_locale (item, key, locales[i]))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> <span class='comment'>/* We need a 7-bit ascii string, so whack all</span></td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='comment'>* above 127 chars */</span></td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> guchar *p;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='keyword'>for</span> (p = (guchar *)str; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>if</span> (*p &gt; 127)</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> *p = '?';</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> <span class='keyword'>return</span> str;</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line">sanitize (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type;</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> type = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> <span class='comment'>/* understand old mate style url exec thingies */</span></td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (type, <span class='string_literal'>"URL"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='keyword'>if</span> (exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> <span class='comment'>/* Note, this must be in this order */</span></td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>, exec);</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='comment'>/* we make sure we have Name, Encoding and Version */</span></td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>char</span> *name = try_english_key (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> <span class='comment'>/* If no name, use the basename */</span></td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> name = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> <span class='comment'>/* If no uri either, use same default as mate_desktop_item_new */</span></td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned here is the name of</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> <span class='comment'>* an application or a document */</span></td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"No name"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("mate-desktop", "No name"<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> <span class='comment'>/* We store everything in UTF-8 so write that down */</span></td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line"> <span class='comment'>/* this is the version that we follow, so write it down */</span></td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"1.0"</span>)<span class='macro_popup'>g_strdup_inline ("1.0")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> FirstBrace,</td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> OnSecHeader,</td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> IgnoreToEOL,</td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> IgnoreToEOLFirst,</td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> KeyDef,</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> KeyDefOnKey,</td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> KeyValue</td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line">ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> <span class='keyword'>int</span> state;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> <span class='keyword'>char</span> CharBuffer [1024];</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> <span class='keyword'>char</span> *next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> Encoding encoding;</td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> Section *cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> <span class='keyword'>char</span> *key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> encoding = get_encoding (rb);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> <span class='keyword'>if</span> (encoding == ENCODING_UNKNOWN) {</td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_UNKNOWN_ENCODING,</td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Unknown encoding of: %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Unknown encoding of: %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"> <span class='comment'>/* Rewind since get_encoding goes through the file */</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line"> <span class='keyword'>if</span> (! readbuf_rewind (rb, error)) {</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> <span class='comment'>/* Note: location and mtime are filled in by the new_from_file</span></td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='comment'>* function since it has those values */</span></td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"><span class='directive'>#define OVERFLOW (next == &amp;CharBuffer [sizeof(CharBuffer)-1])</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> <span class='keyword'>while</span> ((c = readbuf_getc (rb)) != <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> <span class='keyword'>if</span> (c == '\r') <span class='comment'>/* Ignore Carriage Return */</span></td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> <span class='keyword'>switch</span> (state) {</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> <span class='keyword'>case</span> OnSecHeader:</td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> <span class='keyword'>if</span> (c == ']' || OVERFLOW) {</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> cur_section-&gt;keys = g_list_reverse</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='string_literal'>"KDE Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line"> <span class='string_literal'>"Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> cur_section = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> cur_section-&gt;name =</td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> cur_section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> item-&gt;sections = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> (item-&gt;sections, cur_section);</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (c == '[') {</td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='comment'>/* FIXME: probably error out instead of ignoring this */</span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOL:</td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOLFirst:</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> <span class='keyword'>if</span> (c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> <span class='keyword'>if</span> (state == IgnoreToEOLFirst)</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line"> <span class='keyword'>case</span> FirstBrace:</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> <span class='keyword'>case</span> KeyDef:</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line"> <span class='keyword'>case</span> KeyDefOnKey:</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> <span class='keyword'>if</span> (c == '#') {</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> state = IgnoreToEOLFirst;</td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> <span class='keyword'>if</span> (c == '[' &amp;&amp; state != KeyDefOnKey){</td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> state = OnSecHeader;</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* On first pass, don't allow dangling keys */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> <span class='keyword'>if</span> ((c == ' ' &amp;&amp; state != KeyDefOnKey) || c == '\t')</td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> <span class='keyword'>if</span> (c == '\n' || OVERFLOW) { <span class='comment'>/* Abort Definition */</span></td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> <span class='keyword'>if</span> (c == '=' || OVERFLOW){</td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> key = <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> state = KeyValue;</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"> state = KeyDefOnKey;</td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line"> <span class='keyword'>case</span> KeyValue:</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='keyword'>if</span> (OVERFLOW || c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> state = (c == '\n') ? KeyDef : IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"> } <span class='comment'>/* switch */</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line"> } <span class='comment'>/* while ((c = getc_unlocked (f)) != EOF) */</span></td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; state == KeyValue) {</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"><span class='directive'>#undef OVERFLOW</span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> cur_section-&gt;keys = g_list_reverse (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"> item-&gt;keys = g_list_reverse (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line"> <span class='comment'>/* sections were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line"> item-&gt;sections = g_list_reverse (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> <span class='comment'>/* sanitize some things */</span></td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> sanitize (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> <span class='comment'>/* make sure that we set up the type */</span></td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> setup_type (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> stream_printf (GFileOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line">stream_printf (GFileOutputStream *stream, <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...)</td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> gchar *s;</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> <span class='macro'>va_start (args, format)<span class='macro_popup'>__builtin_va_start(args, format)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> s = g_strdup_vprintf (format, args);</td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> <span class='comment'>/* FIXME: what about errors */</span></td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> g_output_stream_write (<span class='macro'>G_OUTPUT_STREAM (stream)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((stream)), ((g_output_stream_get_type ()))))))</span></span>, s, strlen (s),</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> g_free (s);</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line">dump_section (MateDesktopItem *item, GFileOutputStream *stream, Section *section)</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[%s]\n"</span>, section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> <span class='keyword'>for</span> (li = section-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>, section-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line">ditem_save (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line"> stream = g_file_replace (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, G_FILE_CREATE_NONE,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[Desktop Entry]\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='keyword'>if</span> (item-&gt;sections != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> Section *section = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line"> <span class='comment'>/* Don't write empty sections */</span></td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> <span class='keyword'>if</span> (section-&gt;keys == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> dump_section (item, stream, section);</td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> <span class='keyword'>if</span> (li-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line"><span class='keyword'>static</span> gpointer</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line">_mate_desktop_item_copy (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_copy (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line">_mate_desktop_item_free (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> mate_desktop_item_unref (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">GType</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line">mate_desktop_item_get_type (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line"> <span class='keyword'>static</span> GType type = 0;</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line"> <span class='keyword'>if</span> (type == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> type = g_boxed_type_register_static (<span class='string_literal'>"MateDesktopItem"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> _mate_desktop_item_copy,</td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> _mate_desktop_item_free);</td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line">GQuark</td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line">mate_desktop_item_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='keyword'>static</span> GQuark q = 0;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='keyword'>if</span> (q == 0)</td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> q = g_quark_from_static_string (<span class='string_literal'>"mate-desktop-item-error-quark"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-6e323f.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-6e323f.html
new file mode 100644
index 0000000..73f8dc8
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-6e323f.html
@@ -0,0 +1,2013 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-languages.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-languages.c -->
+
+<!-- FILENAME mate-languages.c -->
+
+<!-- FUNCTIONNAME mate_get_country_from_locale -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 6e323f1304a3f6f368b99613244cc1b5 -->
+
+<!-- BUGLINE 1218 -->
+
+<!-- BUGCOLUMN 3 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-languages.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1218, column 3</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-languages.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-languages.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1218": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright 2008 Red Hat, Inc,</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* 2007 William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* along with this program; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* Written by : William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Ray Strode &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;sys/stat.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;glib/gstdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include "mate-languages.h"</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#ifndef <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span> 13</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/xml/iso-codes"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/locale"</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _MateLocale {</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='keyword'>char</span> *id;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> <span class='keyword'>char</span> *language_code;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> <span class='keyword'>char</span> *territory_code;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='keyword'>char</span> *codeset;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='keyword'>char</span> *modifier;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line">} MateLocale;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_languages_map;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territories_map;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_available_locales_map;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_language_count_map;</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territory_count_map;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> * construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier);</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>static</span> gboolean language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name);</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line">mate_locale_free (MateLocale *locale)</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> g_free (locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> g_free (locale-&gt;codeset);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> g_free (locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> g_free (locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> g_free (locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">normalize_codeset (<span class='keyword'>const</span> <span class='keyword'>char</span> *codeset)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>if</span> (codeset == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (codeset, <span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("UTF-8")) ==<br> 0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='macro'>g_str_equal (codeset, <span class='string_literal'>"utf8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("utf8")) ==<br> 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='comment'>* mate_parse_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='comment'>* @language_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> <span class='comment'>* store the language code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* @country_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>* store the country code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> <span class='comment'>* @codesetp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>* store the codeset, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='comment'>* @modifierp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> <span class='comment'>* store the modifier, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='comment'>* Extracts the various components of a locale string of the form</span></td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]]. See</span></td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='comment'>* http://en.wikipedia.org/wiki/Locale.</span></td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> <span class='comment'>* Return value: %TRUE if parsing was successful.</span></td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line">mate_parse_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> <span class='keyword'>char</span> **language_codep,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>char</span> **country_codep,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>char</span> **codesetp,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>char</span> **modifierp)</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>static</span> GRegex *re = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> GMatchInfo *match_info;</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gchar *normalized_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> gchar *normalized_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> match_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> retval = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> re = g_regex_new (<span class='string_literal'>"^(?P&lt;language&gt;[^_.@[:space:]]+)"</span></td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='string_literal'>"(_(?P&lt;territory&gt;[[:upper:]]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='string_literal'>"(\\.(?P&lt;codeset&gt;[-_0-9a-zA-Z]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='string_literal'>"(@(?P&lt;modifier&gt;[[:ascii:]]+))?$"</span>,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> 0, 0, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> g_warning (<span class='string_literal'>"%s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='keyword'>if</span> (!g_regex_match (re, locale, 0, &amp;match_info) ||</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> g_match_info_is_partial_match (match_info)) {</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> g_warning (<span class='string_literal'>"locale '%s' isn't valid\n"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> res = g_match_info_matches (match_info);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> g_warning (<span class='string_literal'>"Unable to parse locale: %s"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> retval = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>if</span> (language_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> *language_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"language"</span>);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='keyword'>if</span> (country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> *country_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"territory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='keyword'>if</span> (*country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> *country_codep[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> g_free (*country_codep);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> *country_codep = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> *codesetp = g_match_info_fetch_named (match_info, <span class='string_literal'>"codeset"</span>);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (*codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> *codesetp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> *codesetp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='keyword'>if</span> (modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> *modifierp = g_match_info_fetch_named (match_info, <span class='string_literal'>"modifier"</span>);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (*modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> *modifierp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> g_free (*modifierp);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> *modifierp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; *codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> normalized_codeset = normalize_codeset (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> normalized_name = construct_language_name (language_codep ? *language_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> country_codep ? *country_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> normalized_codeset,</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> modifierp ? *modifierp : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (language_name_is_valid (normalized_name)) {</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> *codesetp = normalized_codeset;</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> g_free (normalized_codeset);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> g_free (normalized_name);</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> g_match_info_free (match_info);</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line">construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier)</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='macro'>g_assert (language != NULL &amp;&amp; language[0] != 0)<span class='macro_popup'>do { if (language != ((void*)0) &amp;&amp; language[0] != 0) ;<br> else g_assertion_message_expr ("MateDesktop", "mate-languages.c"<br>, 230, ((const char*) (__func__)), "language != NULL &amp;&amp; language[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='macro'>g_assert (territory == NULL || territory[0] != 0)<span class='macro_popup'>do { if (territory == ((void*)0) || territory[0] != 0) ; else<br> g_assertion_message_expr ("MateDesktop", "mate-languages.c",<br> 231, ((const char*) (__func__)), "territory == NULL || territory[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='macro'>g_assert (codeset == NULL || codeset[0] != 0)<span class='macro_popup'>do { if (codeset == ((void*)0) || codeset[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 232, ((const char*) (__func__<br>)), "codeset == NULL || codeset[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='macro'>g_assert (modifier == NULL || modifier[0] != 0)<span class='macro_popup'>do { if (modifier == ((void*)0) || modifier[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 233, ((const char*) (__func__<br>)), "modifier == NULL || modifier[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s%s%s%s%s%s%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> language,</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"_"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? territory : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"."</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? codeset : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"@"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? modifier : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>* mate_normalize_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='comment'>* Gets the normalized locale string in the form</span></td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]] for @name.</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>* Return value: (transfer full): normalized locale string. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line">mate_normalize_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='keyword'>char</span> *normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> gboolean valid;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *modifier = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (locale[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> valid = mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> &amp;codeset, &amp;modifier);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='keyword'>if</span> (!valid)</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> normalized_name = construct_language_name (language_code,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> territory_code,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> codeset, modifier);</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>return</span> normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name)</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gboolean is_valid;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>int</span> lc_type_id = <span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (lc_type_id, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (lc_type_id, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> is_valid = setlocale (lc_type_id, language_name) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> setlocale (lc_type_id, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>return</span> is_valid;</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">language_name_get_codeset_details (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='keyword'>char</span> **pcodeset,</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> gboolean *is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_CTYPE, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (0, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>if</span> (setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, language_name) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> codeset = nl_langinfo (<span class='macro'>CODESET<span class='macro_popup'>CODESET</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>if</span> (pcodeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> *pcodeset = <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>if</span> (is_utf8 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> codeset = normalize_codeset (codeset);</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> *is_utf8 = strcmp (codeset, <span class='string_literal'>"UTF-8"</span>) == 0;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line">locale_dir_has_mo_files (<span class='keyword'>const</span> gchar* path)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> GDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> has_translations = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> dir = g_dir_open (path, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>if</span> (dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> name = g_dir_read_name (dir);</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_has_suffix (name, <span class='string_literal'>".mo"</span>)<span class='macro_popup'>(__builtin_constant_p (".mo")? __extension__ ({ const char * const<br> __str = (name); const char * const __suffix = (".mo"); gboolean<br> __result = (0); if (__str == ((void*)0) || __suffix == ((void<br>*)0)) __result = (g_str_has_suffix) (__str, __suffix); else {<br> const size_t __str_len = strlen (((__str) + !(__str))); const<br> size_t __suffix_len = strlen (((__suffix) + !(__suffix))); if<br> (__str_len &gt;= __suffix_len) __result = memcmp (__str + __str_len<br> - __suffix_len, ((__suffix) + !(__suffix)), __suffix_len) ==<br> 0; } __result; }) : (g_str_has_suffix) (name, ".mo") )</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> has_translations = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> } <span class='keyword'>while</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> g_dir_close (dir);</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='comment'>* mate_language_has_translations:</span></td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='comment'>* Returns %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='comment'>* Return value: %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line">mate_language_has_translations (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> gchar *path;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>if</span> (!has_translations) {</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='keyword'>int</span> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='keyword'>while</span> ((system_data_dirs[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (has_translations == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> path = g_build_filename (system_data_dirs[i], <span class='string_literal'>"locale"</span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">add_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> gboolean utf8_only)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> MateLocale *old_locale;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> gboolean is_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> gboolean valid = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='macro'>g_return_val_if_fail (language_name != NULL, FALSE)<span class='macro_popup'>do { if ((language_name != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "language_name != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>g_return_val_if_fail (*language_name != '\0', FALSE)<span class='macro_popup'>do { if ((*language_name != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*language_name != '\\0'"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> language_name_get_codeset_details (language_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>if</span> (is_utf8) {</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='keyword'>if</span> (strchr (language_name, '.'))</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* If the locale name has no dot, assume that its</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* encoding part is missing and try again after adding</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* ".UTF-8". This catches locale names like "de_DE".</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s.UTF-8"</span>, language_name);</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> language_name_get_codeset_details (name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='keyword'>if</span> (!is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='keyword'>if</span> (!language_name_is_valid (name)) {</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it's invalid"</span>, name);</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> locale = <span class='macro'>g_new0 (MateLocale, 1)<span class='macro_popup'>((MateLocale *) g_malloc0_n ((1), sizeof (MateLocale)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> valid = mate_parse_locale (name,</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> &amp;locale-&gt;language_code,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> &amp;locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> &amp;locale-&gt;codeset,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> &amp;locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> <span class='keyword'>if</span> (!valid) {</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> locale-&gt;id = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> locale-&gt;name = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> locale-&gt;codeset, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='keyword'>if</span> (!mate_language_has_translations (locale-&gt;name) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> !mate_language_has_translations (locale-&gt;id) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> !mate_language_has_translations (locale-&gt;language_code) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it lacks translations"</span>, locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>if</span> (!utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> locale-&gt;id = <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> old_locale = g_hash_table_lookup (mate_available_locales_map, locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='keyword'>if</span> (old_locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> <span class='keyword'>if</span> (strlen (old_locale-&gt;name) &gt; strlen (locale-&gt;name)) {</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> g_hash_table_insert (mate_available_locales_map, <span class='macro'>g_strdup (locale-&gt;id)<span class='macro_popup'>g_strdup_inline (locale-&gt;id)</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line">select_dirs (<span class='keyword'>const</span> <span class='keyword'>struct</span> dirent *dirent)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>int</span> result = 0;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>if</span> (strcmp (dirent-&gt;d_name, <span class='string_literal'>"."</span>) != 0 &amp;&amp; strcmp (dirent-&gt;d_name, <span class='string_literal'>".."</span>) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> mode_t mode = 0;</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"><span class='directive'>#ifdef _DIRENT_HAVE_D_TYPE</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='keyword'>if</span> (dirent-&gt;d_type != <span class='macro'>DT_UNKNOWN<span class='macro_popup'>DT_UNKNOWN</span></span> &amp;&amp; dirent-&gt;d_type != <span class='macro'>DT_LNK<span class='macro_popup'>DT_LNK</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> mode = <span class='macro'>DTTOIF (dirent-&gt;d_type)<span class='macro_popup'>((dirent-&gt;d_type) &lt;&lt; 12)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> } <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>struct</span> stat st;</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, dirent-&gt;d_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_stat<span class='macro_popup'>stat</span></span> (path, &amp;st) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> mode = st.st_mode;</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> result = <span class='macro'>S_ISDIR (mode)<span class='macro_popup'>((((mode)) &amp; 0170000) == (0040000))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line">collect_locales_from_directory (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='keyword'>struct</span> dirent **dirents;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>int</span> ndirents;</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>int</span> cnt;</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> ndirents = scandir (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, &amp;dirents, select_dirs, alphasort);</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='keyword'>for</span> (cnt = 0; cnt &lt; ndirents; ++cnt) {</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>if</span> (add_locale (dirents[cnt]-&gt;d_name, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>if</span> (ndirents &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> free (dirents);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">collect_locales_from_localebin (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> <span class='keyword'>const</span> gchar *argv[] = { <span class='string_literal'>"locale"</span>, <span class='string_literal'>"-a"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> gchar **linep;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>g_auto (GStrv)<span class='macro_popup'>__attribute__((cleanup(glib_auto_cleanup_GStrv))) GStrv</span></span> lines = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> gchar *output = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>if</span> (g_spawn_sync (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, (gchar **) argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> G_SPAWN_SEARCH_PATH|G_SPAWN_STDERR_TO_DEV_NULL,</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;output, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='macro'>g_return_val_if_fail (output != NULL, FALSE)<span class='macro_popup'>do { if ((output != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "output != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> lines = g_strsplit (output, <span class='string_literal'>"\n"</span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='keyword'>if</span> (lines) {</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> linep = lines;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>while</span> (*linep) {</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>if</span> (*linep[0] &amp;&amp; add_locale (*linep, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> linep++;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">fill_count_map (GHashTable *count_map,</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>int</span> count;</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>if</span> (code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (count_map, code)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> + 1;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> count = 1;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> g_hash_table_insert (count_map, <span class='macro'>g_strdup (code)<span class='macro_popup'>g_strdup_inline (code)</span></span>, <span class='macro'>GINT_TO_POINTER (count)<span class='macro_popup'>((gpointer) (glong) (count))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line">count_languages_and_territories (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> gpointer value;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> mate_language_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> mate_territory_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> MateLocale *locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> fill_count_map (mate_language_count_map, locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> fill_count_map (mate_territory_count_map, locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">collect_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> gboolean found_localebin_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> gboolean found_dir_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> mate_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) mate_locale_free);</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> found_localebin_locales = collect_locales_from_localebin ();</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> found_dir_locales = collect_locales_from_directory ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>if</span> (!(found_localebin_locales || found_dir_locales)) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_warning (<span class='string_literal'>"Could not read list of available locales from libc, "</span></td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='string_literal'>"guessing possible locales from available translations, "</span></td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='string_literal'>"but list may be incomplete!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> count_languages_and_territories ();</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">get_language_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (mate_language_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_language_count_map, language)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line">is_unique_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> <span class='keyword'>return</span> get_language_count (language) == 1;</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line">get_territory_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='keyword'>if</span> (mate_territory_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_territory_count_map, territory)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line">is_unique_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> <span class='keyword'>return</span> get_territory_count (territory) == 1;</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line">is_fallback_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *fallback_language_names[] = { <span class='string_literal'>"C"</span>, <span class='string_literal'>"POSIX"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> <span class='keyword'>for</span> (i = 0; fallback_language_names[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>if</span> (strcmp (code, fallback_language_names[i]) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line">get_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 679, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Unspecified"</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_languages_map, code);</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">get_first_item_in_semicolon_list (<span class='keyword'>const</span> <span class='keyword'>char</span> *list)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='keyword'>char</span> **items;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>char</span> *item;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>/* Some entries in iso codes have multiple values, separated</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='comment'>* by semicolons. Not really sure which one to pick, so</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='comment'>* we just arbitrarily pick the first one.</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> items = g_strsplit (list, <span class='string_literal'>"; "</span>, 2);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> item = <span class='macro'>g_strdup (items[0])<span class='macro_popup'>g_strdup_inline (items[0])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> g_strfreev (items);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line">capitalize_utf8_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *str)</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>char</span> first[8] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (!str)</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first);</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> g_strconcat (first, g_utf8_offset_to_pointer (str, 1), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">get_translated_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language;</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> language = get_language (code);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>if</span> (language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_name;</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"Unspecified"</span>))<span class='macro_popup'>g_strdup_inline (gettext ("Unspecified"))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> translated_name = dgettext (<span class='string_literal'>"iso_639"</span>, language);</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_name);</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line">get_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 768, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_territories_map, code);</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">get_translated_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> territory = get_territory (code);</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='keyword'>if</span> (territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_territory;</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> translated_territory = dgettext (<span class='string_literal'>"iso_3166"</span>, territory);</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line">languages_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longB;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longT;</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_id;</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *lang_name;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>if</span> (! (<span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_entry"<br>)) == 0)</span></span> || <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_3_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_3_entry"<br>)) == 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> ccode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> ccode_longB = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> ccode_longT = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> ccode_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> lang_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_1_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_1_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> ccode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2B_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2B_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> ccode_longB = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2T_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2T_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> ccode_longT = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"id"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("id"))<br> == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> ccode_id = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> lang_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='keyword'>if</span> (lang_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='keyword'>if</span> (ccode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> <span class='macro'>g_strdup (ccode)<span class='macro_popup'>g_strdup_inline (ccode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (ccode_longB != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='macro'>g_strdup (ccode_longB)<span class='macro_popup'>g_strdup_inline (ccode_longB)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>if</span> (ccode_longT != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='macro'>g_strdup (ccode_longT)<span class='macro_popup'>g_strdup_inline (ccode_longT)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='keyword'>if</span> (ccode_id != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='macro'>g_strdup (ccode_id)<span class='macro_popup'>g_strdup_inline (ccode_id)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">territories_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_2;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_3;</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ncode;</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_name;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (! <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_3166_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_3166_entry"<br>)) == 0)</span></span> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> acode_2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> acode_3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> ncode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> territory_common_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> territory_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_2_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_2_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> acode_2 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_3_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_3_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> acode_3 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"numeric_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("numeric_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> ncode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"common_name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("common_name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> territory_common_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> territory_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> <span class='keyword'>if</span> (territory_common_name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> territory_name = territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>if</span> (territory_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> <span class='keyword'>if</span> (acode_2 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> <span class='macro'>g_strdup (acode_2)<span class='macro_popup'>g_strdup_inline (acode_2)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> <span class='keyword'>if</span> (acode_3 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> <span class='macro'>g_strdup (acode_3)<span class='macro_popup'>g_strdup_inline (acode_3)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> <span class='keyword'>if</span> (ncode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> <span class='macro'>g_strdup (ncode)<span class='macro_popup'>g_strdup_inline (ncode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line">languages_variant_init (<span class='keyword'>const</span> <span class='keyword'>char</span> *variant)</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> bindtextdomain (variant, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> bind_textdomain_codeset (variant, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filename = g_strdup_printf (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/%s.xml"</span>, variant);</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> res = g_file_get_contents (filename,</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> GMarkupParser parser = { languages_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line">languages_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='keyword'>if</span> (mate_languages_map)</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> mate_languages_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639_3"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line">territories_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='keyword'>if</span> (mate_territories_map)</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> bindtextdomain (<span class='string_literal'>"iso_3166"</span>, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> bind_textdomain_codeset (<span class='string_literal'>"iso_3166"</span>, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> mate_territories_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> res = g_file_get_contents (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> GMarkupParser parser = { territories_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>* mate_get_language_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>* Gets the language description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line">mate_get_language_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> GString *full_language;</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> full_language = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> <span class='keyword'>if</span> (language_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> <span class='keyword'>if</span> (translated_language == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> full_language = <span class='macro'>g_string_append (full_language, translated_language)<span class='macro_popup'>(__builtin_constant_p (translated_language) ? __extension__ (<br>{ const char * const __val = (translated_language); g_string_append_len_inline<br> (full_language, __val, (__val != ((void*)0)) ? (gssize) strlen<br> (((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_language, translated_language, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> <span class='keyword'>if</span> (is_unique_language (language_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> <span class='keyword'>if</span> (territory_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> <span class='keyword'>if</span> (translated_territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> language_name_get_codeset_details (locale, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>if</span> (full_language-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='macro'>g_string_free (full_language, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_language), ((!(0)))) : g_string_free_and_steal (full_language<br>)) : (g_string_free) ((full_language), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_language, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_language<br>), ((0))) : g_string_free_and_steal (full_language)) : (g_string_free<br>) ((full_language), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='comment'>* mate_get_country_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='comment'>* Gets the country description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line">mate_get_country_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> GString *full_name;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> full_name = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='keyword'>if</span> (territory_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='macro'>g_string_append (full_name, translated_territory)<span class='macro_popup'>(__builtin_constant_p (translated_territory) ? __extension__ (<br>{ const char * const __val = (translated_territory); g_string_append_len_inline<br> (full_name, __val, (__val != ((void*)0)) ? (gssize) strlen (<br>((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_name, translated_territory, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (is_unique_territory (territory_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class="mrange"><span class='keyword'>goto</span> out</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:17ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='keyword'>if</span> (language_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>if</span> (translated_language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> translated_language);</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> language_name_get_codeset_details (translation, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>if</span> (full_name-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='macro'>g_string_free (full_name, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_name), ((!(0)))) : g_string_free_and_steal (full_name))<br> : (g_string_free) ((full_name), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_name, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_name<br>), ((0))) : g_string_free_and_steal (full_name)) : (g_string_free<br>) ((full_name), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='comment'>* mate_get_all_locales:</span></td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> <span class='comment'>* Gets all locales.</span></td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='comment'>* Return value: (array zero-terminated=1) (element-type utf8) (transfer full):</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='comment'>* a newly allocated %NULL-terminated string array containing the</span></td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='comment'>* all locales. Free with g_strfreev().</span></td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">mate_get_all_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> gpointer key, value;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> GPtrArray *array;</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> array = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, &amp;key, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> g_ptr_array_add (array, <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> g_ptr_array_add (array, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> <span class='keyword'>return</span> (<span class='keyword'>char</span> **) g_ptr_array_free (array, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> <span class='comment'>* mate_get_language_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='comment'>* Gets the language name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line">mate_get_language_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> get_translated_language (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='comment'>* mate_get_country_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='comment'>* @code: an ISO 3166 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> <span class='comment'>* Gets the country name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line">mate_get_country_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> <span class='keyword'>return</span> get_translated_territory (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-8fac16.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-8fac16.html
new file mode 100644
index 0000000..572482d
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-8fac16.html
@@ -0,0 +1,4693 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-item.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-desktop-item.c -->
+
+<!-- FILENAME mate-desktop-item.c -->
+
+<!-- FUNCTIONNAME escape_string_and_dup -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 8fac16be2998673ca6186da2c67d486a -->
+
+<!-- BUGLINE 3120 -->
+
+<!-- BUGCOLUMN 9 -->
+
+<!-- BUGPATHLENGTH 37 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-desktop-item.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 3120, column 9</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-item.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-item.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"811": 1, "812": 1, "813": 1, "814": 1, "815": 1, "816": 1, "817": 1, "819": 1, "824": 1, "827": 1, "829": 1, "837": 1, "3099": 1, "3100": 1, "3101": 1, "3102": 1, "3103": 1, "3104": 1, "3106": 1, "3109": 1, "3110": 1, "3111": 1, "3112": 1, "3114": 1, "3115": 1, "3116": 1, "3117": 1, "3118": 1, "3119": 1, "3120": 1, "3131": 1, "3132": 1, "3133": 1, "3134": 1, "3135": 1, "3136": 1, "3138": 1, "3139": 1, "3816": 1, "3817": 1, "3818": 1, "3819": 1, "3820": 1, "3821": 1, "3823": 1, "3824": 1, "3825": 1, "3826": 1, "3829": 1, "3830": 1, "3831": 1, "3832": 1, "3833": 1, "3834": 1, "3835": 1, "3836": 1, "3838": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+ <path class="arrow" id="arrow61"/>
+ <path class="arrow" id="arrow62"/>
+ <path class="arrow" id="arrow63"/>
+ <path class="arrow" id="arrow64"/>
+ <path class="arrow" id="arrow65"/>
+ <path class="arrow" id="arrow66"/>
+ <path class="arrow" id="arrow67"/>
+ <path class="arrow" id="arrow68"/>
+ <path class="arrow" id="arrow69"/>
+ <path class="arrow" id="arrow70"/>
+ <path class="arrow" id="arrow71"/>
+ <path class="arrow" id="arrow72"/>
+ <path class="arrow" id="arrow73"/>
+ <path class="arrow" id="arrow74"/>
+ <path class="arrow" id="arrow75"/>
+ <path class="arrow" id="arrow76"/>
+ <path class="arrow" id="arrow77"/>
+ <path class="arrow" id="arrow78"/>
+ <path class="arrow" id="arrow79"/>
+ <path class="arrow" id="arrow80"/>
+ <path class="arrow" id="arrow81"/>
+ <path class="arrow" id="arrow82"/>
+ <path class="arrow" id="arrow83"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 84,82,78,73,72,69,67,64,62,59,57,52,50,47,45,44,39,36,34,33,30,28,27,24,22,21,17,13,10,10,7,4,4,1,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; c-set-style: linux indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/* mate-desktop-item.c - MATE Desktop File Representation</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>Copyright (C) 1999, 2000 Red Hat Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>Copyright (C) 2001 Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>All rights reserved.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>This file is part of the Mate Library.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>Developed by Elliot Lee &lt;[email protected]&gt; and Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>The Mate Library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>The Mate Library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>License along with the Mate Library; see the file COPYING.LIB. If not,</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>Boston, MA 02110-1301, USA. */</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>@NOTATION@</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;limits.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;ctype.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define SN_API_NOT_YET_FROZEN</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;libsn/sn.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#undef MATE_DISABLE_DEPRECATED</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include &lt;mate-desktop-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _MateDesktopItem {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>int</span> refcount;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='comment'>/* all languages used */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList *languages;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> MateDesktopItemType type;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>/* `modified' means that the ditem has been</span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>* modified since the last save. */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gboolean modified;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Keys of the main section only */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GList *sections;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* This includes ALL keys, including</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>* other sections, separated by '/' */</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GHashTable *main_hash;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>char</span> *location;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='comment'>/* If mtime is set to this, set_location won't update mtime,</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='comment'>* this is to be used internally only. */</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='directive'>#define <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span> ((gint64)-2)</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">} Section;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> ENCODING_UNKNOWN,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> ENCODING_UTF8,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> ENCODING_LEGACY_MIXED</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">} Encoding;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* IO reading utils, that look like the libc buffered io stuff</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='directive'>#define <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span> (32 * 1024)</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>char</span> *buf;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> gboolean buf_needs_free;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gboolean past_first_read;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gboolean eof;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> guint64 size;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">} ReadBuf;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> gboolean ditem_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_desktop_item_set_location_gfile (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> GFile *file);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">readbuf_getc (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;eof)</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> rb-&gt;pos == rb-&gt;size) {</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> gssize bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> bytes_read = 0;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> bytes_read = g_input_stream_read (<span class='macro'>G_INPUT_STREAM (rb-&gt;stream)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_input_stream_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> rb-&gt;buf,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='comment'>/* FIXME: handle errors other than EOF */</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (bytes_read &lt;= 0) {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> rb-&gt;eof = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size != 0)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> rb-&gt;past_first_read = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> rb-&gt;size = bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> (guchar) rb-&gt;buf[rb-&gt;pos++];</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='comment'>/* Note, does not include the trailing \n */</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">readbuf_gets (<span class='keyword'>char</span> *buf, gsize bufsize, ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='macro'>g_return_val_if_fail (buf != NULL, NULL)<span class='macro_popup'>do { if ((buf != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "buf != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>g_return_val_if_fail (rb != NULL, NULL)<span class='macro_popup'>do { if ((rb != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rb != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> buf[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> c = readbuf_getc (rb);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> || c == '\n')</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> buf[pos++] = c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> } <span class='keyword'>while</span> (pos &lt; bufsize-1);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; pos == 0)</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> buf[pos++] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='keyword'>return</span> buf;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">readbuf_open (GFile *file, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> stream = g_file_read (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error reading file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error reading file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> rb-&gt;stream = stream;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> rb-&gt;file = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> rb-&gt;uri = uri;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> rb-&gt;buf = g_malloc (<span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> rb-&gt;buf_needs_free = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='comment'>/* rb-&gt;size = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">readbuf_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri, <span class='keyword'>const</span> <span class='keyword'>char</span> *string, gssize length)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= 0, NULL)<span class='macro_popup'>do { if ((length &gt;= 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>/* rb-&gt;file = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* rb-&gt;stream = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> rb-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> rb-&gt;buf = (<span class='keyword'>char</span> *) string;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>/* rb-&gt;buf_needs_free = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> rb-&gt;size = length;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">readbuf_rewind (ReadBuf *rb, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> rb-&gt;eof = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (!rb-&gt;past_first_read)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> rb-&gt;size = 0;</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (g_seekable_seek (<span class='macro'>G_SEEKABLE (rb-&gt;stream)<span class='macro_popup'>((((GSeekable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_seekable_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> 0, G_SEEK_SET, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> rb-&gt;stream = g_file_read (rb-&gt;file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> g_set_error (</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> error, <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error rewinding file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error rewinding file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> rb-&gt;uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line">readbuf_close (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_object_unref (rb-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g_free (rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;buf_needs_free)</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (rb-&gt;buf);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> g_free (rb);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">type_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *type)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>switch</span> (type [0]) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>case</span> 'A':</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Application"</span>))</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>case</span> 'L':</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Link"</span>))</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_LINK;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"FSDevice"</span>))</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> 'M':</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"MimeType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Directory"</span>))</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> 'S':</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Service"</span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"ServiceType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_OTHER;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* mate_desktop_item_new:</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='comment'>* Creates a MateDesktopItem object. The reference count on the returned value is set to '1'.</span></td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* Returns: The new MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">mate_desktop_item_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> retval = <span class='macro'>g_new0 (MateDesktopItem, 1)<span class='macro_popup'>((MateDesktopItem *) g_malloc0_n ((1), sizeof (MateDesktopItem<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> retval-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* These are guaranteed to be set */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned</span></td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>* here is the name of an application or</span></td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>* a document */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No name"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No name"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='string_literal'>"1.0"</span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> retval-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">dup_section (Section *sec)</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> Section *retval = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> retval-&gt;name = <span class='macro'>g_strdup (sec-&gt;name)<span class='macro_popup'>g_strdup_inline (sec-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> retval-&gt;keys = g_list_copy (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">copy_string_hash (gpointer key, gpointer value, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GHashTable *copy = user_data;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> g_hash_table_replace (copy,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>* mate_desktop_item_copy:</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='comment'>* @item: The item to be copied</span></td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* Creates a copy of a MateDesktopItem. The new copy has a refcount of 1.</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* Note: Section stack is NOT copied.</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='comment'>* Returns: The new copy</span></td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">mate_desktop_item_copy (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> retval = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> retval-&gt;type = item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> retval-&gt;modified = item-&gt;modified;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> retval-&gt;location = <span class='macro'>g_strdup (item-&gt;location)<span class='macro_popup'>g_strdup_inline (item-&gt;location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> retval-&gt;mtime = item-&gt;mtime;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> retval-&gt;launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='comment'>/* Languages */</span></td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> retval-&gt;languages = g_list_copy (item-&gt;languages);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='comment'>/* Keys */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> retval-&gt;keys = g_list_copy (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>/* Sections */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> retval-&gt;sections = g_list_copy (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> li-&gt;data = dup_section (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> g_hash_table_foreach (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> copy_string_hash,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> retval-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line">read_sort_order (MateDesktopItem *item, GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>char</span> buf[<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".order"</span>);</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> rb = readbuf_open (child, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>if</span> (str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> str = g_string_new (buf);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>g_string_append (str, buf)<span class='macro_popup'>(__builtin_constant_p (buf) ? __extension__ ({ const char * const<br> __val = (buf); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, buf, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='macro'>g_string_append_c (str, ';')<span class='macro_popup'>g_string_append_c_inline (str, ';')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> mate_desktop_item_set_string (item, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>g_string_free (str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free<br>) ((str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line">make_fake_directory (GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> mate_desktop_item_set_entry_type (item,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> MATE_DESKTOP_ITEM_TYPE_DIRECTORY);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> item-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>; <span class='comment'>/* it doesn't exist, we know that */</span></td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> mate_desktop_item_set_location_gfile (item, child);</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> read_sort_order (item, dir);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_file:</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>* @file: The filename or directory path to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>* This function loads 'file' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">mate_desktop_item_new_from_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *file,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> retval = mate_desktop_item_new_from_gfile (gfile, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* @uri: URI to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* This function loads 'uri' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">mate_desktop_item_new_from_uri (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((uri != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> retval = mate_desktop_item_new_from_gfile (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line">mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> GFile *subfn;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> GFile *parent;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gint64 mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span><span class='string_literal'>","</span><span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp; type != G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_INVALID_TYPE,</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"File '%s' is not a regular file or directory."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "File '%s' is not a regular file or directory."<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> uri);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> GFileInfo *child_info;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> child = g_file_get_child (file, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> child_info = g_file_query_info (child,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>if</span> (child_info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> make_fake_directory (file);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (child_info,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_object_unref (child_info);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> subfn = child;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> subfn = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> rb = readbuf_open (subfn, error);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> ! mate_desktop_item_exists (retval)) {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> mate_desktop_item_unref (retval);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> retval-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> mate_desktop_item_set_location_gfile (retval, subfn);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> retval-&gt;mtime = mtime;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> parent = g_file_get_parent (file);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (parent != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> read_sort_order (retval, parent);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* @string: string to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>* @length: length of string, or -1 to use strlen</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* @error: place to put errors</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='comment'>* This function turns the contents of the string into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">mate_desktop_item_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> gssize length,</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= -1, NULL)<span class='macro_popup'>do { if ((length &gt;= -1)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= -1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (length == -1) {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> length = strlen (string);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> rb = readbuf_new_from_string (uri, string, length);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>/* FIXME: Sort order? */</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">lookup_desktop_file_in_data_dir (<span class='keyword'>const</span> <span class='keyword'>char</span> *desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> path = g_build_filename (data_dir, <span class='string_literal'>"applications"</span>, desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (path, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">file_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *user_data_dir;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>char</span> *retval;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> user_data_dir = g_get_user_data_dir ();</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, user_data_dir))) {</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>for</span> (i = 0; system_data_dirs[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, system_data_dirs[i]))) {</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_basename:</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='comment'>* @basename: The basename of the MateDesktopItem to load.</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='comment'>* This function loads 'basename' from a system data directory and</span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='comment'>* returns its MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">mate_desktop_item_new_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> <span class='keyword'>char</span> *file;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='macro'>g_return_val_if_fail (basename != NULL, NULL)<span class='macro_popup'>do { if ((basename != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "basename != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!(file = file_from_basename (basename))) {</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Cannot find file '%s'"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Cannot find file '%s'"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> basename);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> retval = mate_desktop_item_new_from_file (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> g_free (file);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>* mate_desktop_item_save:</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='comment'>* @under: A new uri (location) for this #MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='comment'>* @force: Save even if it wasn't modified</span></td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='comment'>* @error: #GError return</span></td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='comment'>* Writes the specified item to disk. If the 'under' is NULL, the original</span></td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='comment'>* location is used. It sets the location of this entry to point to the</span></td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>* new location.</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>* Returns: boolean. %TRUE if the file was saved, %FALSE otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">mate_desktop_item_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *under,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> gboolean force,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span id="start83"><span class='keyword'>const</span></span> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span id="start82"><span id="end83"><span class='keyword'>if</span></span></span> (<span id="start81"><span class="mrange"><span id="end82">under</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'under' is not equal to NULL</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> ! force &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> ! item-&gt;modified)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span id="start80"><span id="end81"><span class='keyword'>if</span></span></span> (<span id="start79"><span id="end80"><span class='variable'>under<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>1.1</div></td><td>'under' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> uri = item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span id="start76"><span id="end77"><span id="start78"><span id="end79">uri</span></span></span></span> = <span id="start77"><span id="end78">under</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span id="start75"><span id="end76"><span class='keyword'>if</span></span></span> (<span id="start74"><span id="end75"><span class='variable'>uri<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>2.1</div></td><td>'uri' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_FILENAME,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No filename to save to"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No filename to save to"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span id="start73"><span id="end74"><span class='keyword'>if</span></span></span> ( ! <span class="mrange"><span id="end72">ditem_save</span> (<span id="start72"><span id="end73">item</span></span>, uri, error)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'ditem_save'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> item-&gt;mtime = g_get_real_time () / <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>* mate_desktop_item_ref:</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='comment'>* Description: Increases the reference count of the specified item.</span></td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='comment'>* Returns: the newly referenced @item</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line">mate_desktop_item_ref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line">free_section (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> Section *section = data;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_free (section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> section-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_list_free_full (section-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> g_free (section);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='comment'>* mate_desktop_item_unref:</span></td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='comment'>* Decreases the reference count of the specified item, and destroys the item if there are no more references left.</span></td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">mate_desktop_item_unref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> item-&gt;refcount--;</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>if</span>(item-&gt;refcount != 0)</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_list_free_full (item-&gt;languages, g_free);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> item-&gt;languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> g_list_free_full (item-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> g_list_free_full (item-&gt;sections, (GDestroyNotify) free_section);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> item-&gt;sections = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> g_hash_table_destroy (item-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> item-&gt;main_hash = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> item-&gt;location = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_free (item);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line">find_section (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (strcmp (section, <span class='string_literal'>"Desktop Entry"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> sec = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>if</span> (strcmp (sec-&gt;name, section) == 0)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> sec = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> sec-&gt;name = <span class='macro'>g_strdup (section)<span class='macro_popup'>g_strdup_inline (section)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> item-&gt;sections = g_list_append (item-&gt;sections, sec);</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='comment'>/* Don't mark the item modified, this is just an empty section,</span></td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='comment'>* it won't be saved even */</span></td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line">section_from_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (key == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> p = strchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> name = g_strndup (key, p - key);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> sec = find_section (item, name);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line">key_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>char</span> *p = strrchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='keyword'>return</span> p+1;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span> key;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">lookup (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line">lookup_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='keyword'>return</span> lookup (item, key);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> ret = lookup (item, full);</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">lookup_best_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> ret = lookup_locale (item, key, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>if</span> (ret != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line">set (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> Section *sec = section_from_key (item, key);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (sec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> sec-&gt;keys = g_list_append</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> (sec-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>g_strdup (key_basename (key))<span class='macro_popup'>g_strdup_inline (key_basename (key))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (sec-&gt;keys, key_basename (key),</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> sec-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> g_list_delete_link (sec-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> item-&gt;keys = g_list_append (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> (item-&gt;keys, key, (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> item-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> g_list_delete_link (item-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line">set_locale (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> set (item, key, value);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> set (item, full, value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='comment'>/* add the locale to the list of languages if it wasn't there</span></td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* before */</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> item-&gt;languages = g_list_prepend (item-&gt;languages,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>g_strdup (locale)<span class='macro_popup'>g_strdup_inline (locale)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">list_to_vector (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='keyword'>int</span> len = g_slist_length (list);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> argv = <span class='macro'>g_new0 (<span class='keyword'>char</span> *, len+1)<span class='macro_popup'>((char * *) g_malloc0_n ((len+1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>for</span> (i = 0, li = list;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> li = li-&gt;next, i++) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> argv[i] = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> argv[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>return</span> argv;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">make_args (GList *files)</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> GSList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class='keyword'>for</span> (li = files; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *file = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> gfile = g_file_new_for_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> list = g_slist_prepend (list, gfile);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>return</span> g_slist_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line">free_args (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>for</span> (li = list; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_unref (<span class='macro'>G_FILE (li-&gt;data)<span class='macro_popup'>((((GFile*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((li-&gt;data)), ((g_file_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">escape_single_quotes (<span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> gboolean in_double_quotes)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GString *gs;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *pre = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *post = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; ! in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> pre = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> post = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> pre = <span class='string_literal'>"\"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> post = <span class='string_literal'>"'\""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (strchr (s, '\'') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='keyword'>return</span> g_strconcat (pre, s, post, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gs = g_string_new (pre);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (*p == '\'')</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>g_string_append (gs, <span class='string_literal'>"'\\''"</span>)<span class='macro_popup'>(__builtin_constant_p ("'\\''") ? __extension__ ({ const char<br> * const __val = ("'\\''"); g_string_append_len_inline (gs, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (gs, "'\\''"<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='macro'>g_string_append (gs, post)<span class='macro_popup'>(__builtin_constant_p (post) ? __extension__ ({ const char * const<br> __val = (post); g_string_append_len_inline (gs, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (gs, post, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> URI_TO_LOCAL_BASENAME</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">} ConversionType;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line">convert_uri (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> ConversionType conversion)</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>switch</span> (conversion) {</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>case</span> URI_TO_STRING:</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> retval = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_PATH:</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> retval = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_DIRNAME:</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='keyword'>char</span> *local_path;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> local_path = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> retval = g_path_get_dirname (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_BASENAME:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> retval = g_file_get_basename (file);</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-desktop-item.c"<br>, 1203, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> ADDED_NONE = 0,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> ADDED_SINGLE,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> ADDED_ALL</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line">} AddedStatus;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line">append_all_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='keyword'>for</span> (l = args; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>char</span> *converted;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (!(converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>" "</span>)<span class='macro_popup'>(__builtin_constant_p (" ") ? __extension__ ({ const char * const<br> __val = (" "); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, " ", (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> escaped = escape_single_quotes (converted,</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>return</span> ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">append_first_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>char</span> *converted = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>for</span> (l = *arg_ptr; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>if</span> ((converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> *arg_ptr = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (!converted)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>return</span> added_status;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> escaped = escape_single_quotes (converted, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> added_status != ADDED_ALL ? ADDED_SINGLE : added_status;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">do_percent_subst (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *arg,</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> <span class='keyword'>char</span> *esc;</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cs;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>if</span> (arg[0] != '%' || arg[1] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='keyword'>switch</span> (arg[1]) {</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='keyword'>case</span> '%':</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>case</span> 'U':</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>case</span> 'N':</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> <span class='keyword'>case</span> 'f':</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> 'u':</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>case</span> 'd':</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>case</span> 'm':</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says this is deprecated</span></td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> <span class='comment'>* and replace with --miniicon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_MINI_ICON<span class='macro_popup'>"MiniIcon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--miniicon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--miniicon=") ? __extension__ ({ const<br> char * const __val = ("--miniicon="); g_string_append_len_inline<br> (str, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "--miniicon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>case</span> 'i':</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says replace with --icon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--icon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--icon=") ? __extension__ ({ const char<br> * const __val = ("--icon="); g_string_append_len_inline (str<br>, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !<br>(__val))) : (gssize) -1); }) : g_string_append_len_inline (str<br>, "--icon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='keyword'>case</span> 'c':</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>case</span> 'k':</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> esc = escape_single_quotes (item-&gt;location, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>case</span> 'v':</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_DEV<span class='macro_popup'>"Dev"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='comment'>/* Maintain special characters - e.g. "%20" */</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_ascii_isdigit (arg [1])<span class='macro_popup'>((g_ascii_table[(guchar) (arg [1])] &amp; G_ASCII_DIGIT) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line">expand_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> gboolean escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> gboolean single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> gboolean double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> GString *gs = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (escape) {</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\\') {</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot)</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> escape = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\'') {</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> single_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (single_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '"') {</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> double_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '%') {</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='keyword'>if</span> (do_percent_subst (item, p, gs,</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> single_quot, double_quot,</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> args, arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> added_status)) {</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"><span class='comment'>/*Functions in this code block should only ever be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line">sn_error_trap_push (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line">sn_error_trap_pop (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line">make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>int</span> i, j;</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>int</span> desktop_startup_id_len;</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, i + 2)<span class='macro_popup'>((char * *) g_malloc_n ((i + 2), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> desktop_startup_id_len = strlen (<span class='string_literal'>"DESKTOP_STARTUP_ID"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='keyword'>for</span> (i = 0, j = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp[i], <span class='string_literal'>"DESKTOP_STARTUP_ID"</span>, desktop_startup_id_len) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> retval[j] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> retval[j] = g_strdup_printf (<span class='string_literal'>"DESKTOP_STARTUP_ID=%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> sn_launcher_context_get_startup_id (sn_context));</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> retval[j] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"><span class='comment'>/* This should be fairly long, as it's confusing to users if a startup</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='comment'>* ends when it shouldn't (it appears that the startup failed, and</span></td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='comment'>* they have to relaunch the app). Also the timeout only matters when</span></td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> <span class='comment'>* there are bugs and apps don't end their own startup sequence.</span></td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>* This timeout is a "last resort" timeout that ignores whether the</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* startup sequence has shown activity or not. Marco and the</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>* tasklist have smarter, and correspondingly able-to-be-shorter</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='comment'>* timeouts. The reason our timeout is dumb is that we don't monitor</span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='comment'>* the sequence (don't use an SnMonitorContext)</span></td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> 30 /* seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span> (<span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> * 1000)</span></td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> GSList *contexts;</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> guint timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line">} StartupTimeoutData;</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">free_startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> g_slist_free_full (std-&gt;contexts, (GDestroyNotify) sn_launcher_context_unref);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (std-&gt;timeout_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_source_remove (std-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> g_free (std);</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line">startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GSList *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> <span class='keyword'>int</span> min_timeout;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> min_timeout = <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> gint64 now = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> GTimeVal now;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> g_get_current_time (&amp;now);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> tmp = std-&gt;contexts;</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>while</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> SnLauncherContext *sn_context = tmp-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> GSList *next = tmp-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> time_t tv_sec;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> suseconds_t tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context, &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> tv = (tv_sec * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>) + tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> elapsed = (<span class='keyword'>double</span>) (now - tv) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>long</span> tv_sec, tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> elapsed =</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> ((((<span class='keyword'>double</span>)now.tv_sec - tv_sec) * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span> +</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> (now.tv_usec - tv_usec))) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (elapsed &gt;= <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> std-&gt;contexts = g_slist_remove (std-&gt;contexts,</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> sn_launcher_context_complete (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> min_timeout = <span class='macro'>MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed))<span class='macro_popup'>(((min_timeout) &lt; (((30 * 1000) - elapsed))) ? (min_timeout<br>) : (((30 * 1000) - elapsed)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> tmp = next;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='comment'>/* we'll use seconds for the timeout */</span></td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> <span class='keyword'>if</span> (min_timeout &lt; 1000)</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> min_timeout = 1000;</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> <span class='keyword'>if</span> (std-&gt;contexts == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> std-&gt;timeout_id = g_timeout_add_seconds (min_timeout / 1000,</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> std);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>/* always remove this one, but we may have reinstalled another one. */</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line">add_startup_timeout (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> SnLauncherContext *sn_context)</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> StartupTimeoutData *data;</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> data = g_object_get_data (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> data = <span class='macro'>g_new (StartupTimeoutData, 1)<span class='macro_popup'>((StartupTimeoutData *) g_malloc_n ((1), sizeof (StartupTimeoutData<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> data-&gt;screen = screen;</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> data-&gt;contexts = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> data-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> data, free_startup_timeout);</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> sn_launcher_context_ref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> data-&gt;contexts = g_slist_prepend (data-&gt;contexts, sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> <span class='keyword'>if</span> (data-&gt;timeout_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> data-&gt;timeout_id = g_timeout_add_seconds (</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION - functions should only be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">stringify_uris (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> append_all_converted (str, URI_TO_STRING, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line">stringify_files (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> append_all_converted (str, URI_TO_LOCAL_PATH, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line">make_environment_for_screen (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>char</span> *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='keyword'>int</span> display_index = -1;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> <span class='keyword'>int</span> i, env_len;</td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> <span class='macro'>g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((screen)); GType __t = ((gdk_screen_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "GDK_IS_SCREEN (screen)"); return (((void*)0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp [i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> <span class='keyword'>for</span> (env_len = 0; envp [env_len]; env_len++)</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp [env_len], <span class='string_literal'>"DISPLAY"</span>, strlen (<span class='string_literal'>"DISPLAY"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> display_index = env_len;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, env_len + 1)<span class='macro_popup'>((char * *) g_malloc_n ((env_len + 1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> retval [env_len] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> display_name = <span class='macro'>g_strdup (gdk_display_get_name (display))<span class='macro_popup'>g_strdup_inline (gdk_display_get_name (display))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; env_len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (i == display_index)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> retval [i] = g_strconcat (<span class='string_literal'>"DISPLAY="</span>, display_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> retval [i] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='macro'>g_assert (i == env_len)<span class='macro_popup'>do { if (i == env_len) ; else g_assertion_message_expr ("MateDesktop"<br>, "mate-desktop-item.c", 1728, ((const char*) (__func__)), "i == env_len"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> g_free (display_name);</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line">dummy_child_watch (GPid pid,</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> gint status,</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='comment'>/* Nothing, this is just to ensure we don't double fork</span></td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='comment'>* and break pkexec:</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=675789</span></td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">ditem_execute (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec,</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> gboolean launch_only_one,</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> gboolean use_current_dir,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> gboolean append_uris,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gboolean append_paths,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> gboolean do_not_reap_child,</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span class='keyword'>char</span> **free_me = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> <span class='keyword'>char</span> **real_argv;</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>int</span> i, ret;</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='keyword'>char</span> **term_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='keyword'>int</span> term_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> GSList *vector_list;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> GSList *args, *arg_ptr;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> AddedStatus added_status;</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>char</span> **temp_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='keyword'>int</span> temp_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='keyword'>char</span> *new_exec, *uris, *temp;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='keyword'>char</span> *exec_locale;</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='keyword'>int</span> launched = 0;</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> GPid pid;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> SnLauncherContext *sn_context;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> SnDisplay *sn_display;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *startup_class;</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> <span class='macro'>g_return_val_if_fail (item, -1)<span class='macro_popup'>do { if ((item)) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "item"); return (-1); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> working_dir = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_PATH<span class='macro_popup'>"Path"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='keyword'>if</span> (working_dir &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> !g_file_test (working_dir, G_FILE_TEST_IS_DIR))</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span class='keyword'>if</span> (working_dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !use_current_dir)</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> working_dir = g_get_home_dir ();</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span class='keyword'>if</span> (mate_desktop_item_get_boolean (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *options =</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL_OPTIONS<span class='macro_popup'>"TerminalOptions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> <span class='keyword'>if</span> (options != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_shell_parse_argv (options,</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> &amp;term_argc,</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> &amp;term_argv,</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> <span class='comment'>/* error */</span>);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='comment'>/* ignore errors */</span></td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> mate_desktop_prepend_terminal_to_vector (&amp;term_argc, &amp;term_argv);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> args = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> arg_ptr = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> <span class='keyword'>if</span> (screen)</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> sn_display = sn_display_new (<span class='macro'>GDK_DISPLAY_XDISPLAY (gdkdisplay)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdkdisplay))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> sn_error_trap_push,</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> sn_error_trap_pop);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='comment'>/* Only initiate notification if desktop file supports it.</span></td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='comment'>* (we could avoid setting up the SnLauncherContext if we aren't going</span></td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='comment'>* to initiate, but why bother)</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> startup_class = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"StartupWMClass"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> <span class='keyword'>if</span> (startup_class ||</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> mate_desktop_item_get_boolean (item, <span class='string_literal'>"StartupNotify"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> sn_context = sn_launcher_context_new (sn_display,</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> screen ? gdk_x11_screen_get_screen_number (screen) :</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> <span class='macro'>DefaultScreen (GDK_DISPLAY_XDISPLAY (gdkdisplay))<span class='macro_popup'>(((_XPrivDisplay)((gdk_x11_display_get_xdisplay (gdkdisplay))<br>))-&gt;default_screen)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_GENERIC_NAME<span class='macro_popup'>"GenericName"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> <span class='keyword'>if</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='keyword'>char</span> *description;</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> sn_launcher_context_set_name (sn_context, name);</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> description = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Starting %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Starting %s"))</span></span>, name);</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> sn_launcher_context_set_description (sn_context, description);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> g_free (description);</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> icon = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>if</span> (icon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> sn_launcher_context_set_icon_name (sn_context, icon);</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> sn_launcher_context_set_workspace (sn_context, workspace);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (startup_class != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> sn_launcher_context_set_wmclass (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> startup_class);</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> sn_display = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> <span class='keyword'>if</span> (screen) {</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> envp = make_environment_for_screen (screen, envp);</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> exec_locale = g_filename_from_utf8 (exec, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> <span class='keyword'>if</span> (exec_locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> exec_locale = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> added_status = ADDED_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> new_exec = expand_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> exec_locale,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> args, &amp;arg_ptr, &amp;added_status);</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_uris) {</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> uris = stringify_uris (args);</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> <span class='comment'>/* append_uris and append_paths are mutually exlusive */</span></td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_paths) {</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> uris = stringify_files (args);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> <span class='keyword'>if</span> (launched &gt; 0 &amp;&amp; added_status == ADDED_NONE) {</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (new_exec,</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> &amp;temp_argc, &amp;temp_argv, error)) {</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> <span class='comment'>/* The error now comes from g_shell_parse_argv */</span></td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> vector_list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; term_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='macro'>g_strdup (term_argv[i])<span class='macro_popup'>g_strdup_inline (term_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; temp_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> <span class='macro'>g_strdup (temp_argv[i])<span class='macro_popup'>g_strdup_inline (temp_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> g_strfreev (temp_argv);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> real_argv = list_to_vector (vector_list);</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_slist_free_full (vector_list, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span class='keyword'>if</span> (sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> !sn_launcher_context_get_initiated (sn_context)) {</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> <span class='comment'>/* This means that we always use the first real_argv[0]</span></td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> <span class='comment'>* we select for the "binary name", but it's probably</span></td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='comment'>* OK to do that. Binary name isn't super-important</span></td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> <span class='comment'>* anyway, and we can't initiate twice, and we</span></td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> <span class='comment'>* must initiate prior to fork/exec.</span></td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> sn_launcher_context_set_binary_name (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> real_argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='keyword'>if</span> (item-&gt;launch_time &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> launch_time = gdk_x11_display_get_user_time (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> sn_launcher_context_initiate (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> g_get_prgname () ? g_get_prgname () : <span class='string_literal'>"unknown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> real_argv[0],</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> launch_time);</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='comment'>/* Don't allow accidental reuse of same timestamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> ((MateDesktopItem *)item)-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> envp = make_spawn_environment_for_sn_context (sn_context, envp);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span class='keyword'>if</span> ( ! g_spawn_async (working_dir,</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> real_argv,</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> envp,</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH <span class='comment'>/* flags */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func */</span></td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func_data */</span></td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> (do_not_reap_child ? &amp;pid : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='comment'>/* child_pid */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> error)) {</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='comment'>/* The error was set for us,</span></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='comment'>* we just can't launch this thingie */</span></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (do_not_reap_child) {</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> g_child_watch_add (pid, dummy_child_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> launched ++;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> <span class='keyword'>if</span> (arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> arg_ptr = arg_ptr-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> <span class='comment'>/* rinse, repeat until we run out of arguments (That</span></td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> <span class='comment'>* is if we were adding singles anyway) */</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> } <span class='keyword'>while</span> (added_status == ADDED_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> ! launch_only_one);</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_free (exec_locale);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> <span class='keyword'>if</span> ((sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)){</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> sn_launcher_context_complete (sn_context); <span class='comment'>/* end sequence */</span></td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> add_startup_timeout (screen ? screen :</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> gdk_display_get_default_screen (gdk_display_get_default ()),</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> sn_display_unref (sn_display);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION */</span></td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> free_args (args);</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>if</span> (term_argv)</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> g_strfreev (term_argv);</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"><span class='comment'>/* strip any trailing &amp;, return FALSE if bad things happen and</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='comment'>we end up with an empty string */</span></td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">strip_the_amp (<span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> size_t exec_len;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> <span class='macro'>g_strstrip (exec)<span class='macro_popup'>g_strchomp (g_strchug (exec))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> exec_len = strlen (exec);</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='comment'>/* kill any trailing '&amp;' */</span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='keyword'>if</span> (exec[exec_len-1] == '&amp;') {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> exec[exec_len-1] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> g_strchomp (exec);</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='comment'>/* can't exactly launch an empty thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>char</span> *the_exec;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> exec = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='comment'>/* This is a URL, so launch it as a url */</span></td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *url;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> url = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> <span class='comment'>/* Mate panel used to put this in Exec */</span></td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0'))</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> url = exec;</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0')) {</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_URL,</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No URL to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No URL to launch"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> retval = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> url,</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> <span class='macro'>GDK_CURRENT_TIME<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='keyword'>return</span> retval ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='comment'>/* check the type, if there is one set */</span></td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type != MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NOT_LAUNCHABLE,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Not a launchable item"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Not a launchable item"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> exec[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='comment'>/* make a new copy and get rid of spaces */</span></td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> the_exec = <span class='macro'>g_alloca (strlen (exec) + 1)<span class='macro_popup'>__builtin_alloca (strlen (exec) + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> g_strlcpy (the_exec, exec, strlen (exec) + 1);</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> ( ! strip_the_amp (the_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_BAD_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Bad command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Bad command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> ret = ditem_execute (item, the_exec, file_list, screen, workspace, envp,</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_ONLY_ONE),</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_USE_CURRENT_DIR),</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_URIS),</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_PATHS),</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_DO_NOT_REAP_CHILD),</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='comment'>* mate_desktop_item_launch:</span></td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='comment'>* This function runs the program listed in the specified 'item',</span></td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>* optionally appending additional arguments to its command line. It uses</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* #g_shell_parse_argv to parse the the exec string into a vector which is</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>* then passed to #g_spawn_async for execution. This can return all</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* the errors from MateURL, #g_shell_parse_argv and #g_spawn_async,</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* in addition to it's own. The files are</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* only added if the entry defines one of the standard % strings in it's</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>* Exec field.</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line">mate_desktop_item_launch (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> item, file_list, flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> <span class='comment'>* @envp: child's environment, or %NULL to inherit parent's</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line">mate_desktop_item_launch_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_on_screen:</span></td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span class='comment'>* @screen: the %GdkScreen on which the application should be launched</span></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span class='comment'>* @workspace: the workspace on which the app should be launched (-1 for current)</span></td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* additionally attempts to launch the application on a given screen</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>* and workspace.</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">mate_desktop_item_launch_on_screen (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> screen, workspace, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='comment'>* mate_desktop_item_drop_uri_list:</span></td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>* A list of files or urls dropped onto an icon, the proper (Url or File)</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> <span class='comment'>* exec is run you can pass directly string that you got as the</span></td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> <span class='comment'>* text/uri-list. This just parses the list and calls</span></td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line">mate_desktop_item_drop_uri_list (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_drop_uri_list_with_env (item, uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"><span class='comment'>* mate_desktop_item_drop_uri_list_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"><span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"><span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"><span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>* @envp: child's environment</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"><span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"><span class='comment'>* See mate_desktop_item_drop_uri_list for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"><span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"><span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"><span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"><span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line">mate_desktop_item_drop_uri_list_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='keyword'>char</span> **uris;</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> uris = g_uri_list_extract_uris (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='keyword'>for</span> (uri = uris[0]; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; uri++) {</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> list = g_list_prepend (list, uri);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> list = g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> ret = mate_desktop_item_launch_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> item, list, flags, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> g_strfreev (uris);</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> g_list_free (list);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line">exec_exists (<span class='keyword'>const</span> <span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='keyword'>if</span> (g_path_is_absolute (exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='keyword'>if</span> (access (exec, <span class='macro'>X_OK<span class='macro_popup'>1</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>char</span> *tryme;</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> tryme = g_find_program_in_path (exec);</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> <span class='keyword'>if</span> (tryme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> g_free (tryme);</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> <span class='comment'>* mate_desktop_item_exists:</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* Attempt to figure out if the program that can be executed by this item</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>* actually exists. First it tries the TryExec attribute to see if that</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* contains a program that is in the path. Then if there is no such</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>* attribute, it tries the first word of the Exec attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> <span class='comment'>* Returns: A boolean, %TRUE if it exists, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">mate_desktop_item_exists (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *try_exec;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> try_exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TRY_EXEC<span class='macro_popup'>"TryExec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> <span class='keyword'>if</span> (try_exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> ! exec_exists (try_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exe;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (exec, &amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='keyword'>if</span> (argc &lt; 1) {</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> exe = argv[0];</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> <span class='keyword'>if</span> ( ! exec_exists (exe)) {</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> <span class='comment'>* mate_desktop_item_get_entry_type:</span></td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='comment'>* Gets the type attribute (the 'Type' field) of the item. This should</span></td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> <span class='comment'>* usually be 'Application' for an application, but it can be 'Directory'</span></td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='comment'>* for a directory description. There are other types available as well.</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> <span class='comment'>* The type usually indicates how the desktop item should be handeled and</span></td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='comment'>* how the 'Exec' field should be handeled.</span></td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='comment'>* Returns: The type of the specified 'item'. The returned</span></td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='comment'>* memory remains owned by the MateDesktopItem and should not be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line">MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line">mate_desktop_item_get_entry_type (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, 0)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>return</span> item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line">mate_desktop_item_set_entry_type (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> MateDesktopItemType type)</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> item-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_NULL:</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION:</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Application"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_LINK:</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE:</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"FSDevice"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"MimeType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY:</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE:</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Service"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"ServiceType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> <span class='comment'>* mate_desktop_item_get_file_status:</span></td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='comment'>* This function checks the modification time of the on-disk file to</span></td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> <span class='comment'>* see if it is more recent than the in-memory data.</span></td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> <span class='comment'>* Returns: An enum value that specifies whether the item has changed since being loaded.</span></td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line">MateDesktopItemStatus</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line">mate_desktop_item_get_file_status (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> MateDesktopItemStatus retval;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> retval = MATE_DESKTOP_ITEM_UNCHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_has_attribute (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> retval = MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (((guint64) item-&gt;mtime) &lt; g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> retval = MATE_DESKTOP_ITEM_CHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='comment'>* mate_desktop_item_find_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> <span class='comment'>* @icon: icon name, something you'd get out of the Icon key</span></td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>* @desired_size: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='comment'>* is not an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line">mate_desktop_item_find_icon (GtkIconTheme *icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon,</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='keyword'>int</span> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='keyword'>int</span> flags)</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> GtkIconInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='keyword'>char</span> *full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='macro'>g_return_val_if_fail (icon_theme == NULL ||<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='macro'>GTK_IS_ICON_THEME (icon_theme), NULL)<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || strcmp(icon,<span class='string_literal'>""</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_path_is_absolute (icon)) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> <span class='keyword'>if</span> (g_file_test (icon, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> <span class='keyword'>char</span> *icon_no_extension;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='keyword'>if</span> (icon_theme == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> icon_theme = gtk_icon_theme_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> icon_no_extension = <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> p = strrchr (icon_no_extension, '.');</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='keyword'>if</span> (p &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> (strcmp (p, <span class='string_literal'>".png"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> strcmp (p, <span class='string_literal'>".xpm"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> strcmp (p, <span class='string_literal'>".svg"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> *p = 0;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> info = gtk_icon_theme_lookup_icon (icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> icon_no_extension,</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> full = <span class='macro'>g_strdup (gtk_icon_info_get_filename (info))<span class='macro_popup'>g_strdup_inline (gtk_icon_info_get_filename (info))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> g_free (icon_no_extension);</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='keyword'>return</span> full;</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> <span class='comment'>* mate_desktop_item_get_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* is not set as an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line">mate_desktop_item_get_icon (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> GtkIconTheme *icon_theme)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='comment'>/* maybe this function should be deprecated in favour of find icon</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> <span class='comment'>* -George */</span></td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> icon = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_find_icon (icon_theme, icon,</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> 48 <span class='comment'>/* desired_size */</span>,</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> 0 <span class='comment'>/* flags */</span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* mate_desktop_item_get_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Returns: The file location associated with 'item'.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">mate_desktop_item_get_location (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>return</span> item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='comment'>* @location: A uri string specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item.</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line">mate_desktop_item_set_location (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *location)</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> strcmp (item-&gt;location, location) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> item-&gt;location = <span class='macro'>g_strdup (location)<span class='macro_popup'>g_strdup_inline (location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='comment'>/* This is ugly, but useful internally */</span></td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>if</span> (item-&gt;mtime != <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location) {</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>if</span> (g_file_info_has_attribute (info,</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> item-&gt;mtime = g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='comment'>/* Make sure that save actually saves */</span></td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location_file:</span></td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='comment'>* @file: A local filename specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item to the given @file.</span></td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line">mate_desktop_item_set_location_file (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *file)</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> mate_desktop_item_set_location_gfile (item, gfile);</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">mate_desktop_item_set_location_gfile (MateDesktopItem *item, GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mate_desktop_item_set_location (item, uri);</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> <span class='comment'>* Reading/Writing different sections, NULL is the standard section</span></td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line">mate_desktop_item_attr_exists (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> <span class='comment'>* String type</span></td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line">mate_desktop_item_get_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line">mate_desktop_item_set_string (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> set (item, attr, value);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> item-&gt;type = type_from_string (value);</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='comment'>* LocaleString type</span></td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>return</span> lookup_best_locale(item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring_lang(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr, <span class='keyword'>const</span> <span class='keyword'>char</span>* language)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>return</span> lookup_locale(item, attr, language);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='comment'>* mate_desktop_item_get_string_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> <span class='comment'>* @attr: An attribute name</span></td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='comment'>* Returns the current locale that is used for the given attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> <span class='comment'>* This might not be the same for all attributes. For example, if your</span></td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='comment'>* locale is "en_US.ISO8859-1" but attribute FOO only has "en_US" then</span></td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> <span class='comment'>* that would be returned for attr = "FOO". If attribute BAR has</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* "en_US.ISO8859-1" then that would be returned for "BAR".</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* Returns: a string equal to the current locale or NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>* if the attribute is invalid or there is no matching locale.</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">mate_desktop_item_get_attr_locale (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> value = lookup_locale (item, attr, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">mate_desktop_item_get_languages (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>char</span> *language = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>if</span> (attr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> lookup_locale (item, attr, language) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> list = g_list_prepend (list, language);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line">get_language (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>/* find first without encoding */</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='keyword'>if</span> (strchr (langs_pointer[i], '.') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_desktop_item_set_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> set_locale (item, attr, get_language (), value);</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line">mate_desktop_item_set_localestring_lang (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> set_locale (item, attr, language, value);</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_desktop_item_clear_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> <span class='keyword'>for</span> (l = item-&gt;languages; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> set_locale (item, attr, l-&gt;data, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> set (item, attr, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='comment'>* Strings, Regexps types</span></td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">mate_desktop_item_get_strings (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> <span class='keyword'>return</span> g_strsplit (value, <span class='string_literal'>";"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">mate_desktop_item_set_strings (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> <span class='keyword'>char</span> **strings)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='keyword'>char</span> *str, *str2;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> str = g_strjoinv (<span class='string_literal'>";"</span>, strings);</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> str2 = g_strconcat (str, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> set (item, attr, str2);</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> g_free (str2);</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='comment'>* Boolean type</span></td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line">mate_desktop_item_get_boolean (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> <span class='keyword'>return</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> atoi (value) != 0);</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line">mate_desktop_item_set_boolean (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean value)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> set (item, attr, value ? <span class='string_literal'>"true"</span> : <span class='string_literal'>"false"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line">mate_desktop_item_set_launch_time (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> guint32 timestamp)</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> item-&gt;launch_time = timestamp;</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> <span class='comment'>* Clearing attributes</span></td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line">mate_desktop_item_clear_section (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> sec = find_section (item, section);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> <span class='keyword'>if</span> (sec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> g_free (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> g_list_free (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (li = sec-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> sec-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_list_free (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"><span class='comment'>/************************************************************</span></td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='comment'>* Parser: *</span></td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='comment'>************************************************************/</span></td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">standard_is_boolean (<span class='keyword'>const</span> <span class='keyword'>char</span> * key)</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> <span class='keyword'>static</span> GHashTable *bools = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='keyword'>if</span> (bools == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> bools = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (bools, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line">standard_is_strings (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>static</span> GHashTable *strings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>if</span> (strings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> strings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (strings, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='comment'>/* If no need to cannonize, returns NULL */</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line">cannonize (<span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='keyword'>if</span> (standard_is_boolean (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> <span class='keyword'>if</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> atoi (value) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"true"</span>)<span class='macro_popup'>g_strdup_inline ("true")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"false"</span>)<span class='macro_popup'>g_strdup_inline ("false")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (standard_is_strings (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> <span class='keyword'>int</span> len = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>if</span> (len == 0 || value[len-1] != ';') {</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> <span class='keyword'>return</span> g_strconcat (value, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='comment'>/* XXX: Perhaps we should canonize numeric values as well, but this</span></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span class='comment'>* has caused some subtle problems before so it needs to be done</span></td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='comment'>* carefully if at all */</span></td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">decode_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='keyword'>char</span> *p = g_malloc (strlen (s) + 1);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> <span class='keyword'>char</span> *q = p;</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='keyword'>if</span> (*s == '\\'){</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> <span class='keyword'>switch</span> (*(++s)){</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='keyword'>case</span> 's':</td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> *p++ = ' ';</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> <span class='keyword'>case</span> 't':</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> *p++ = '\t';</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> *p++ = '\n';</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> <span class='keyword'>case</span> 'r':</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> *p++ = '\r';</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span id="start43"><span class='keyword'>static</span></span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">escape_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> <span class='keyword'>char</span> *<span id="start42"><span id="end43">return_value</span></span>, *p;</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *q;</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>int</span> len = 0;</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span id="start41"><span id="end42"><span class='keyword'>if</span></span></span> (<span id="start40"><span id="end41"><span class='variable'>s<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>15.1</div></td><td>'s' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup(<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> <span id="start37"><span id="end38"><span id="start39"><span id="end40">q</span></span></span></span> = <span id="start38"><span id="end39">s</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span id="start18"><span id="end19"><span id="start24"><span id="end25"><span id="start30"><span id="end31"><span id="start36"><span id="end37"><span class='keyword'>while</span></span></span></span></span></span></span></span></span> (*q){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path24" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path26" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">26</div></td><td><div class="PathNav"><a href="#Path25" title="Previous event (25)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 3116</td><td><div class="PathNav"><a href="#Path27" title="Next event (27)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> <span id="start23"><span id="end24"><span id="start29"><span id="end30"><span id="start35"><span id="end36">len</span></span></span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span id="start22"><span id="end23"><span id="start28"><span id="end29"><span id="start34"><span id="end35"><span class='keyword'>if</span></span></span></span></span></span></span> (<span id="start21"><span class="mrange"><span id="end22"><span id="start27"><span class="mrange"><span id="end28"><span id="start33"><span class="mrange"><span id="end34">strchr</span></span></span></span></span></span> (<span class='string_literal'>"\n\r\t\\"</span>, *q) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path24" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path25" title="Next event (25)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path25" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">25</div></td><td><div class="PathNav"><a href="#Path24" title="Previous event (24)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path26" title="Next event (26)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span id="start20"><span id="end21"><span id="start26"><span id="end27"><span id="start32"><span id="end33">q</span></span></span></span></span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> <span id="start19"><span id="end20"><span id="start25"><span id="end26"><span id="start31"><span id="end32">}</td></tr></span></span></span></span></span></span>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span id="start15"><span id="end16"><span id="start17"><span id="end18">return_value</span></span></span></span> = p = (<span class='keyword'>char</span> *) g_malloc (<span id="start16"><span id="end17">len</span></span> + 1);</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span id="start3"><span id="start9"><span class='keyword'>do</span></span></span> {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path29" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">29</div></td><td><div class="PathNav"><a href="#Path28" title="Previous event (28)">&#x2190;</a></div></td><td>Loop condition is true. Execution continues on line 3118</td><td><div class="PathNav"><a href="#Path30" title="Next event (30)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path32" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">32</div></td><td><div class="PathNav"><a href="#Path31" title="Previous event (31)">&#x2190;</a></div></td><td>Loop condition is true. Execution continues on line 3118</td><td><div class="PathNav"><a href="#Path33" title="Next event (33)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> <span id="start2"><span id="end3"><span id="start8"><span id="end9"><span id="start14"><span id="end15"><span class='keyword'>switch</span></span></span></span></span></span></span> (<span id="start1"><span id="end2"><span id="start7"><span id="end8"><span id="start13"><span id="end14">*</span></span></span></span></span></span>s){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path27" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">27</div></td><td><div class="PathNav"><a href="#Path26" title="Previous event (26)">&#x2190;</a></div></td><td>Control jumps to 'case 92:' at line 3131</td><td><div class="PathNav"><a href="#Path28" title="Next event (28)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path30" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">30</div></td><td><div class="PathNav"><a href="#Path29" title="Previous event (29)">&#x2190;</a></div></td><td>Control jumps to 'case 92:' at line 3131</td><td><div class="PathNav"><a href="#Path31" title="Next event (31)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path33" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">33</div></td><td><div class="PathNav"><a href="#Path32" title="Previous event (32)">&#x2190;</a></div></td><td>Control jumps to 'case 9:' at line 3119</td><td><div class="PathNav"><a href="#EndPath" title="Next event (34)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='keyword'>case</span> '\t':</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> <span class="mrange"><span id="start0"><span id="end1">*</span></span>p++ <span id="end0">=</span> '\\';</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:30ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">34</div></td><td><div class="PathNav"><a href="#Path33" title="Previous event (33)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> *p++ = 't';</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> <span class='keyword'>case</span> '\n':</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> *p++ = 'n';</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>case</span> '\r':</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> *p++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> <span id="start6"><span id="end7"><span id="start12"><span id="end13">*</span></span></span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> <span id="start5"><span id="end6"><span id="start11"><span id="end12">*</span></span></span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span id="start4"><span id="end5"><span id="start10"><span id="end11"><span class='keyword'>break</span></span></span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path28" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">28</div></td><td><div class="PathNav"><a href="#Path27" title="Previous event (27)">&#x2190;</a></div></td><td> Execution continues on line 3138</td><td><div class="PathNav"><a href="#Path29" title="Next event (29)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path31" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">31</div></td><td><div class="PathNav"><a href="#Path30" title="Previous event (30)">&#x2190;</a></div></td><td> Execution continues on line 3138</td><td><div class="PathNav"><a href="#Path32" title="Next event (32)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> } <span class='keyword'>while</span> (<span id="end4"><span id="end10">*</span></span>s++);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> <span class='keyword'>return</span> return_value;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line">check_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> GIConv cd = g_iconv_open (<span class='string_literal'>"UTF-8"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> ((GIConv)-1 == cd)</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> g_iconv_close (cd);</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line">insert_locales (GHashTable *encodings, <span class='keyword'>char</span> *enc, ...)</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='macro'>va_start (args, enc)<span class='macro_popup'>__builtin_va_start(args, enc)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>for</span> (;;) {</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> g_hash_table_insert (encodings, s, enc);</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"><span class='comment'>/* make a standard conversion table from the desktop standard spec */</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">init_encodings (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GHashTable *encodings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> <span class='comment'>/* "C" is plain ascii */</span></td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ASCII"</span>, <span class='string_literal'>"C"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ARMSCII-8"</span>, <span class='string_literal'>"by"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"BIG5"</span>, <span class='string_literal'>"zh_TW"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"CP1251"</span>, <span class='string_literal'>"be"</span>, <span class='string_literal'>"bg"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"EUC-CN"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-CN"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GB2312"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-JP"</span>, <span class='string_literal'>"ja"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-KR"</span>, <span class='string_literal'>"ko"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GEORGIAN-PS"</span>, <span class='string_literal'>"ka"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-1"</span>, <span class='string_literal'>"br"</span>, <span class='string_literal'>"ca"</span>, <span class='string_literal'>"da"</span>, <span class='string_literal'>"de"</span>, <span class='string_literal'>"en"</span>, <span class='string_literal'>"es"</span>, <span class='string_literal'>"eu"</span>, <span class='string_literal'>"fi"</span>, <span class='string_literal'>"fr"</span>, <span class='string_literal'>"gl"</span>, <span class='string_literal'>"it"</span>, <span class='string_literal'>"nl"</span>, <span class='string_literal'>"wa"</span>, <span class='string_literal'>"no"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"sv"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-2"</span>, <span class='string_literal'>"cs"</span>, <span class='string_literal'>"hr"</span>, <span class='string_literal'>"hu"</span>, <span class='string_literal'>"pl"</span>, <span class='string_literal'>"ro"</span>, <span class='string_literal'>"sk"</span>, <span class='string_literal'>"sl"</span>, <span class='string_literal'>"sq"</span>, <span class='string_literal'>"sr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-3"</span>, <span class='string_literal'>"eo"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-5"</span>, <span class='string_literal'>"mk"</span>, <span class='string_literal'>"sp"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-7"</span>, <span class='string_literal'>"el"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-9"</span>, <span class='string_literal'>"tr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-13"</span>, <span class='string_literal'>"lt"</span>, <span class='string_literal'>"lv"</span>, <span class='string_literal'>"mi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-14"</span>, <span class='string_literal'>"ga"</span>, <span class='string_literal'>"cy"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-15"</span>, <span class='string_literal'>"et"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-R"</span>, <span class='string_literal'>"ru"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-U"</span>, <span class='string_literal'>"uk"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"TCVN-5712"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN-5712"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TIS-620"</span>, <span class='string_literal'>"th"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "VISCII", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>return</span> encodings;</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line">get_encoding_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span class='keyword'>char</span> lang[3];</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *encoding;</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span class='keyword'>static</span> GHashTable *encodings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='comment'>/* if locale includes encoding, use it */</span></td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> encoding = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> encoding+1;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='keyword'>if</span> (encodings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> encodings = init_encodings ();</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='comment'>/* first try the entire locale (at this point ll_CC) */</span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> encoding = g_hash_table_lookup (encodings, locale);</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>return</span> encoding;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='comment'>/* Try just the language */</span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> strncpy (lang, locale, 2);</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> lang[2] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (encodings, lang);</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"><span class='keyword'>static</span> Encoding</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">get_encoding (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='keyword'>char</span> buf [<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> gboolean all_valid_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='keyword'>if</span> (strncmp (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> buf,</td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='keyword'>char</span> *p = &amp;buf[strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)];</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='keyword'>if</span> (*p != '=')</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"UTF-8"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"Legacy-Mixed"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='comment'>/* According to the spec we're not supposed</span></td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='comment'>* to read a file like this */</span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='keyword'>return</span> ENCODING_UNKNOWN;</td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (<span class='string_literal'>"[KDE Desktop Entry]"</span>, buf) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='comment'>/* don't break yet, we still want to support</span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='comment'>* Encoding even here */</span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8 &amp;&amp; ! g_utf8_validate (buf, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> all_valid_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='keyword'>if</span> (old_kde)</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> <span class='comment'>/* try to guess by location */</span></td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strstr (rb-&gt;uri, <span class='string_literal'>"mate/apps/"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> <span class='comment'>/* old mate */</span></td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> <span class='comment'>/* A dilemma, new KDE files are in UTF-8 but have no Encoding</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> <span class='comment'>* info, at this time we really can't tell. The best thing to</span></td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='comment'>* do right now is to just assume UTF-8 if the whole file</span></td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> <span class='comment'>* validates as utf8 I suppose */</span></td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8)</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line">decode_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *value, Encoding encoding, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* if legacy mixed, then convert */</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_LEGACY_MIXED) {</td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *char_encoding = get_encoding_from_locale (locale);</td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>char</span> *utf8_string;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='keyword'>if</span> (char_encoding == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='keyword'>if</span> (strcmp (char_encoding, <span class='string_literal'>"ASCII"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> utf8_string = g_convert (value, -1, <span class='string_literal'>"UTF-8"</span>, char_encoding,</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='keyword'>if</span> (utf8_string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> retval = decode_string_and_dup (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> g_free (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='comment'>/* if utf8, then validate */</span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_UTF8) {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='keyword'>if</span> ( ! g_utf8_validate (value, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='comment'>/* invalid utf8, ignore this key */</span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='comment'>/* Meaning this is not a localized string */</span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">snarf_locale_from_key (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *brace;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='keyword'>char</span> *locale, *p;</td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> brace = strchr (key, '[');</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='keyword'>if</span> (brace == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> locale = <span class='macro'>g_strdup (brace + 1)<span class='macro_popup'>g_strdup_inline (brace + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (*locale == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> p = strchr (locale, ']');</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> <span class='keyword'>return</span> locale;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line">insert_key (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> Section *cur_section,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> Encoding encoding,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value,</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> gboolean old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> gboolean no_translations)</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> <span class='keyword'>char</span> *k;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> <span class='keyword'>char</span> *val;</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"> <span class='comment'>/* we always store everything in UTF-8 */</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> val = <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> <span class='keyword'>char</span> *locale = snarf_locale_from_key (key);</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> <span class='comment'>/* If we're ignoring translations */</span></td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> <span class='keyword'>if</span> (no_translations &amp;&amp; locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> val = decode_string (value, encoding, locale);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* Ignore this key, it's whacked */</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='keyword'>if</span> (val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> g_strchomp (val);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='comment'>/* For old KDE entries, we can also split by a comma</span></td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='comment'>* on sort order, so convert to semicolons */</span></td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> <span class='keyword'>if</span> (old_kde &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> strchr (val, ';') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> <span class='keyword'>for</span> (i = 0; val[i] != '\0'; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> <span class='keyword'>if</span> (val[i] == ',')</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> val[i] = ';';</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> <span class='comment'>/* Check some types, not perfect, but catches a lot</span></td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> <span class='comment'>* of things */</span></td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> <span class='keyword'>char</span> *cannon = cannonize (key, val);</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> <span class='keyword'>if</span> (cannon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> val = cannon;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> <span class='comment'>/* Take care of the language part */</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> <span class='comment'>/* Whack C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> p = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> <span class='keyword'>char</span> *p, *brace;</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> <span class='comment'>/* Whack the encoding part */</span></td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> p = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> item-&gt;languages = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> (item-&gt;languages, locale);</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> <span class='comment'>/* Whack encoding from encoding in the key */</span></td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> brace = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> p = strchr (brace, '.');</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> *p = ']';</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line"> *(p+1) = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, k) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> item-&gt;keys = g_list_prepend (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> <span class='macro'>g_strdup (k)<span class='macro_popup'>g_strdup_inline (k)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> g_hash_table_replace (item-&gt;main_hash, k, val);</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> cur_section-&gt;name, k);</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, full) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> cur_section-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> g_list_prepend (cur_section-&gt;keys, k);</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> full, val);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line">setup_type (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type = g_hash_table_lookup (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> <span class='keyword'>char</span> *base = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> <span class='keyword'>if</span> (base != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> strcmp (base, <span class='string_literal'>".directory"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> <span class='comment'>/* This gotta be a directory */</span></td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"Directory"</span>)<span class='macro_popup'>g_strdup_inline ("Directory")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> item-&gt;type = type_from_string (type);</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"><span class='comment'>/* fallback to find something suitable for C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line">try_english_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>char</span> *locales[] = { <span class='string_literal'>"en_US"</span>, <span class='string_literal'>"en_GB"</span>, <span class='string_literal'>"en_AU"</span>, <span class='string_literal'>"en"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> <span class='keyword'>for</span> (i = 0; locales[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> str = <span class='macro'>g_strdup (lookup_locale (item, key, locales[i]))<span class='macro_popup'>g_strdup_inline (lookup_locale (item, key, locales[i]))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> <span class='comment'>/* We need a 7-bit ascii string, so whack all</span></td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='comment'>* above 127 chars */</span></td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> guchar *p;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='keyword'>for</span> (p = (guchar *)str; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>if</span> (*p &gt; 127)</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> *p = '?';</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> <span class='keyword'>return</span> str;</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line">sanitize (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type;</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> type = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> <span class='comment'>/* understand old mate style url exec thingies */</span></td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (type, <span class='string_literal'>"URL"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='keyword'>if</span> (exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> <span class='comment'>/* Note, this must be in this order */</span></td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>, exec);</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='comment'>/* we make sure we have Name, Encoding and Version */</span></td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>char</span> *name = try_english_key (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> <span class='comment'>/* If no name, use the basename */</span></td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> name = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> <span class='comment'>/* If no uri either, use same default as mate_desktop_item_new */</span></td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned here is the name of</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> <span class='comment'>* an application or a document */</span></td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"No name"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("mate-desktop", "No name"<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> <span class='comment'>/* We store everything in UTF-8 so write that down */</span></td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line"> <span class='comment'>/* this is the version that we follow, so write it down */</span></td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"1.0"</span>)<span class='macro_popup'>g_strdup_inline ("1.0")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> FirstBrace,</td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> OnSecHeader,</td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> IgnoreToEOL,</td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> IgnoreToEOLFirst,</td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> KeyDef,</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> KeyDefOnKey,</td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> KeyValue</td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line">ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> <span class='keyword'>int</span> state;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> <span class='keyword'>char</span> CharBuffer [1024];</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> <span class='keyword'>char</span> *next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> Encoding encoding;</td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> Section *cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> <span class='keyword'>char</span> *key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> encoding = get_encoding (rb);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> <span class='keyword'>if</span> (encoding == ENCODING_UNKNOWN) {</td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_UNKNOWN_ENCODING,</td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Unknown encoding of: %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Unknown encoding of: %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"> <span class='comment'>/* Rewind since get_encoding goes through the file */</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line"> <span class='keyword'>if</span> (! readbuf_rewind (rb, error)) {</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> <span class='comment'>/* Note: location and mtime are filled in by the new_from_file</span></td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='comment'>* function since it has those values */</span></td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"><span class='directive'>#define OVERFLOW (next == &amp;CharBuffer [sizeof(CharBuffer)-1])</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> <span class='keyword'>while</span> ((c = readbuf_getc (rb)) != <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> <span class='keyword'>if</span> (c == '\r') <span class='comment'>/* Ignore Carriage Return */</span></td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> <span class='keyword'>switch</span> (state) {</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> <span class='keyword'>case</span> OnSecHeader:</td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> <span class='keyword'>if</span> (c == ']' || OVERFLOW) {</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> cur_section-&gt;keys = g_list_reverse</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='string_literal'>"KDE Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line"> <span class='string_literal'>"Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> cur_section = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> cur_section-&gt;name =</td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> cur_section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> item-&gt;sections = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> (item-&gt;sections, cur_section);</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (c == '[') {</td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='comment'>/* FIXME: probably error out instead of ignoring this */</span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOL:</td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOLFirst:</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> <span class='keyword'>if</span> (c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> <span class='keyword'>if</span> (state == IgnoreToEOLFirst)</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line"> <span class='keyword'>case</span> FirstBrace:</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> <span class='keyword'>case</span> KeyDef:</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line"> <span class='keyword'>case</span> KeyDefOnKey:</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> <span class='keyword'>if</span> (c == '#') {</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> state = IgnoreToEOLFirst;</td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> <span class='keyword'>if</span> (c == '[' &amp;&amp; state != KeyDefOnKey){</td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> state = OnSecHeader;</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* On first pass, don't allow dangling keys */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> <span class='keyword'>if</span> ((c == ' ' &amp;&amp; state != KeyDefOnKey) || c == '\t')</td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> <span class='keyword'>if</span> (c == '\n' || OVERFLOW) { <span class='comment'>/* Abort Definition */</span></td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> <span class='keyword'>if</span> (c == '=' || OVERFLOW){</td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> key = <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> state = KeyValue;</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"> state = KeyDefOnKey;</td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line"> <span class='keyword'>case</span> KeyValue:</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='keyword'>if</span> (OVERFLOW || c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> state = (c == '\n') ? KeyDef : IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"> } <span class='comment'>/* switch */</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line"> } <span class='comment'>/* while ((c = getc_unlocked (f)) != EOF) */</span></td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; state == KeyValue) {</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"><span class='directive'>#undef OVERFLOW</span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> cur_section-&gt;keys = g_list_reverse (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"> item-&gt;keys = g_list_reverse (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line"> <span class='comment'>/* sections were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line"> item-&gt;sections = g_list_reverse (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> <span class='comment'>/* sanitize some things */</span></td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> sanitize (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> <span class='comment'>/* make sure that we set up the type */</span></td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> setup_type (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> stream_printf (GFileOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line">stream_printf (GFileOutputStream *stream, <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...)</td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> gchar *s;</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> <span class='macro'>va_start (args, format)<span class='macro_popup'>__builtin_va_start(args, format)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> s = g_strdup_vprintf (format, args);</td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> <span class='comment'>/* FIXME: what about errors */</span></td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> g_output_stream_write (<span class='macro'>G_OUTPUT_STREAM (stream)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((stream)), ((g_output_stream_get_type ()))))))</span></span>, s, strlen (s),</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> g_free (s);</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line">dump_section (MateDesktopItem *item, GFileOutputStream *stream, Section *section)</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[%s]\n"</span>, section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> <span class='keyword'>for</span> (li = section-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>, section-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"><span id="start71"><span class='keyword'>static</span></span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line">ditem_save (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> <span id="start70"><span id="end71">GList</span></span> *li;</td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line"> stream = g_file_replace (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, G_FILE_CREATE_NONE,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> <span id="start69"><span id="end70"><span class='keyword'>if</span></span></span> (<span id="start68"><span class="mrange"><span id="end69">stream</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'stream' is not equal to NULL</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line"> <span id="start65"><span id="end66"><span id="start67"><span id="end68">stream_printf</span></span></span></span> (<span id="start66"><span id="end67">stream</span></span>, <span class='string_literal'>"[Desktop Entry]\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> <span id="start52"><span id="end53"><span id="start64"><span id="end65"><span class='keyword'>for</span></span></span></span></span> (li = item-&gt;keys; <span id="start51"><span class="mrange"><span id="end52"><span id="start63"><span class="mrange"><span id="end64">li</span></span></span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span></span>; li = li-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:31ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Assuming 'li' is not equal to NULL</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:31ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Assuming 'li' is not equal to NULL</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"> <span id="start48"><span id="end49"><span id="start50"><span id="end51"><span id="start60"><span id="end61"><span id="start62"><span id="end63"><span class='keyword'>const</span></span></span></span></span></span></span></span></span> <span class='keyword'>char</span> *key = <span id="start49"><span id="end50"><span id="start61"><span id="end62">li</span></span></span></span>-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> <span id="start47"><span id="end48"><span id="start59"><span id="end60"><span class='keyword'>if</span></span></span></span></span> (<span id="start46"><span class="mrange"><span id="end47"><span id="start58"><span class="mrange"><span id="end59">value</span></span></span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming 'value' is not equal to NULL</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Assuming 'value' is not equal to NULL</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line"> <span id="start45"><span id="end46"><span id="start55"><span id="end56"><span id="start57"><span id="end58"><span class='keyword'>char</span></span></span></span></span></span></span> *val = <span class="mrange"><span id="end44">escape_string_and_dup</span> (<span id="start44"><span id="end45"><span id="start56"><span id="end57">value</span></span></span></span>)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Calling 'escape_string_and_dup'</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> <span id="start54"><span id="end55">g_free</span></span> (val);</td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> <span id="start53"><span id="end54">}</td></tr></span></span>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='keyword'>if</span> (item-&gt;sections != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> Section *section = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line"> <span class='comment'>/* Don't write empty sections */</span></td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> <span class='keyword'>if</span> (section-&gt;keys == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> dump_section (item, stream, section);</td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> <span class='keyword'>if</span> (li-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line"><span class='keyword'>static</span> gpointer</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line">_mate_desktop_item_copy (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_copy (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line">_mate_desktop_item_free (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> mate_desktop_item_unref (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">GType</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line">mate_desktop_item_get_type (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line"> <span class='keyword'>static</span> GType type = 0;</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line"> <span class='keyword'>if</span> (type == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> type = g_boxed_type_register_static (<span class='string_literal'>"MateDesktopItem"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> _mate_desktop_item_copy,</td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> _mate_desktop_item_free);</td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line">GQuark</td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line">mate_desktop_item_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='keyword'>static</span> GQuark q = 0;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='keyword'>if</span> (q == 0)</td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> q = g_quark_from_static_string (<span class='string_literal'>"mate-desktop-item-error-quark"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-a7ec2e.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-a7ec2e.html
new file mode 100644
index 0000000..aa6fda1
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-a7ec2e.html
@@ -0,0 +1,2013 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-languages.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-languages.c -->
+
+<!-- FILENAME mate-languages.c -->
+
+<!-- FUNCTIONNAME mate_get_language_from_locale -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT a7ec2e3f72a988c07820a4a8bf913cb5 -->
+
+<!-- BUGLINE 1137 -->
+
+<!-- BUGCOLUMN 3 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-languages.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1137, column 3</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-languages.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-languages.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1137": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright 2008 Red Hat, Inc,</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* 2007 William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* along with this program; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* Written by : William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Ray Strode &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;sys/stat.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;glib/gstdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include "mate-languages.h"</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#ifndef <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span> 13</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/xml/iso-codes"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/locale"</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _MateLocale {</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='keyword'>char</span> *id;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> <span class='keyword'>char</span> *language_code;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> <span class='keyword'>char</span> *territory_code;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='keyword'>char</span> *codeset;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='keyword'>char</span> *modifier;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line">} MateLocale;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_languages_map;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territories_map;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_available_locales_map;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_language_count_map;</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territory_count_map;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> * construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier);</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>static</span> gboolean language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name);</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line">mate_locale_free (MateLocale *locale)</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> g_free (locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> g_free (locale-&gt;codeset);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> g_free (locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> g_free (locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> g_free (locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">normalize_codeset (<span class='keyword'>const</span> <span class='keyword'>char</span> *codeset)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>if</span> (codeset == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (codeset, <span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("UTF-8")) ==<br> 0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='macro'>g_str_equal (codeset, <span class='string_literal'>"utf8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("utf8")) ==<br> 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='comment'>* mate_parse_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='comment'>* @language_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> <span class='comment'>* store the language code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* @country_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>* store the country code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> <span class='comment'>* @codesetp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>* store the codeset, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='comment'>* @modifierp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> <span class='comment'>* store the modifier, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='comment'>* Extracts the various components of a locale string of the form</span></td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]]. See</span></td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='comment'>* http://en.wikipedia.org/wiki/Locale.</span></td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> <span class='comment'>* Return value: %TRUE if parsing was successful.</span></td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line">mate_parse_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> <span class='keyword'>char</span> **language_codep,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>char</span> **country_codep,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>char</span> **codesetp,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>char</span> **modifierp)</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>static</span> GRegex *re = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> GMatchInfo *match_info;</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gchar *normalized_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> gchar *normalized_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> match_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> retval = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> re = g_regex_new (<span class='string_literal'>"^(?P&lt;language&gt;[^_.@[:space:]]+)"</span></td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='string_literal'>"(_(?P&lt;territory&gt;[[:upper:]]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='string_literal'>"(\\.(?P&lt;codeset&gt;[-_0-9a-zA-Z]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='string_literal'>"(@(?P&lt;modifier&gt;[[:ascii:]]+))?$"</span>,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> 0, 0, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> g_warning (<span class='string_literal'>"%s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='keyword'>if</span> (!g_regex_match (re, locale, 0, &amp;match_info) ||</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> g_match_info_is_partial_match (match_info)) {</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> g_warning (<span class='string_literal'>"locale '%s' isn't valid\n"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> res = g_match_info_matches (match_info);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> g_warning (<span class='string_literal'>"Unable to parse locale: %s"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> retval = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>if</span> (language_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> *language_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"language"</span>);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='keyword'>if</span> (country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> *country_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"territory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='keyword'>if</span> (*country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> *country_codep[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> g_free (*country_codep);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> *country_codep = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> *codesetp = g_match_info_fetch_named (match_info, <span class='string_literal'>"codeset"</span>);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (*codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> *codesetp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> *codesetp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='keyword'>if</span> (modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> *modifierp = g_match_info_fetch_named (match_info, <span class='string_literal'>"modifier"</span>);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (*modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> *modifierp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> g_free (*modifierp);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> *modifierp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; *codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> normalized_codeset = normalize_codeset (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> normalized_name = construct_language_name (language_codep ? *language_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> country_codep ? *country_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> normalized_codeset,</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> modifierp ? *modifierp : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (language_name_is_valid (normalized_name)) {</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> *codesetp = normalized_codeset;</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> g_free (normalized_codeset);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> g_free (normalized_name);</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> g_match_info_free (match_info);</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line">construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier)</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='macro'>g_assert (language != NULL &amp;&amp; language[0] != 0)<span class='macro_popup'>do { if (language != ((void*)0) &amp;&amp; language[0] != 0) ;<br> else g_assertion_message_expr ("MateDesktop", "mate-languages.c"<br>, 230, ((const char*) (__func__)), "language != NULL &amp;&amp; language[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='macro'>g_assert (territory == NULL || territory[0] != 0)<span class='macro_popup'>do { if (territory == ((void*)0) || territory[0] != 0) ; else<br> g_assertion_message_expr ("MateDesktop", "mate-languages.c",<br> 231, ((const char*) (__func__)), "territory == NULL || territory[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='macro'>g_assert (codeset == NULL || codeset[0] != 0)<span class='macro_popup'>do { if (codeset == ((void*)0) || codeset[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 232, ((const char*) (__func__<br>)), "codeset == NULL || codeset[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='macro'>g_assert (modifier == NULL || modifier[0] != 0)<span class='macro_popup'>do { if (modifier == ((void*)0) || modifier[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 233, ((const char*) (__func__<br>)), "modifier == NULL || modifier[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s%s%s%s%s%s%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> language,</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"_"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? territory : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"."</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? codeset : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"@"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? modifier : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>* mate_normalize_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='comment'>* Gets the normalized locale string in the form</span></td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]] for @name.</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>* Return value: (transfer full): normalized locale string. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line">mate_normalize_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='keyword'>char</span> *normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> gboolean valid;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *modifier = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (locale[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> valid = mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> &amp;codeset, &amp;modifier);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='keyword'>if</span> (!valid)</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> normalized_name = construct_language_name (language_code,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> territory_code,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> codeset, modifier);</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>return</span> normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name)</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gboolean is_valid;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>int</span> lc_type_id = <span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (lc_type_id, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (lc_type_id, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> is_valid = setlocale (lc_type_id, language_name) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> setlocale (lc_type_id, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>return</span> is_valid;</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">language_name_get_codeset_details (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='keyword'>char</span> **pcodeset,</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> gboolean *is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_CTYPE, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (0, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>if</span> (setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, language_name) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> codeset = nl_langinfo (<span class='macro'>CODESET<span class='macro_popup'>CODESET</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>if</span> (pcodeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> *pcodeset = <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>if</span> (is_utf8 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> codeset = normalize_codeset (codeset);</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> *is_utf8 = strcmp (codeset, <span class='string_literal'>"UTF-8"</span>) == 0;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line">locale_dir_has_mo_files (<span class='keyword'>const</span> gchar* path)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> GDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> has_translations = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> dir = g_dir_open (path, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>if</span> (dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> name = g_dir_read_name (dir);</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_has_suffix (name, <span class='string_literal'>".mo"</span>)<span class='macro_popup'>(__builtin_constant_p (".mo")? __extension__ ({ const char * const<br> __str = (name); const char * const __suffix = (".mo"); gboolean<br> __result = (0); if (__str == ((void*)0) || __suffix == ((void<br>*)0)) __result = (g_str_has_suffix) (__str, __suffix); else {<br> const size_t __str_len = strlen (((__str) + !(__str))); const<br> size_t __suffix_len = strlen (((__suffix) + !(__suffix))); if<br> (__str_len &gt;= __suffix_len) __result = memcmp (__str + __str_len<br> - __suffix_len, ((__suffix) + !(__suffix)), __suffix_len) ==<br> 0; } __result; }) : (g_str_has_suffix) (name, ".mo") )</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> has_translations = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> } <span class='keyword'>while</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> g_dir_close (dir);</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='comment'>* mate_language_has_translations:</span></td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='comment'>* Returns %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='comment'>* Return value: %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line">mate_language_has_translations (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> gchar *path;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>if</span> (!has_translations) {</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='keyword'>int</span> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='keyword'>while</span> ((system_data_dirs[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (has_translations == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> path = g_build_filename (system_data_dirs[i], <span class='string_literal'>"locale"</span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">add_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> gboolean utf8_only)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> MateLocale *old_locale;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> gboolean is_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> gboolean valid = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='macro'>g_return_val_if_fail (language_name != NULL, FALSE)<span class='macro_popup'>do { if ((language_name != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "language_name != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>g_return_val_if_fail (*language_name != '\0', FALSE)<span class='macro_popup'>do { if ((*language_name != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*language_name != '\\0'"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> language_name_get_codeset_details (language_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>if</span> (is_utf8) {</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='keyword'>if</span> (strchr (language_name, '.'))</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* If the locale name has no dot, assume that its</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* encoding part is missing and try again after adding</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* ".UTF-8". This catches locale names like "de_DE".</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s.UTF-8"</span>, language_name);</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> language_name_get_codeset_details (name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='keyword'>if</span> (!is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='keyword'>if</span> (!language_name_is_valid (name)) {</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it's invalid"</span>, name);</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> locale = <span class='macro'>g_new0 (MateLocale, 1)<span class='macro_popup'>((MateLocale *) g_malloc0_n ((1), sizeof (MateLocale)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> valid = mate_parse_locale (name,</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> &amp;locale-&gt;language_code,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> &amp;locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> &amp;locale-&gt;codeset,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> &amp;locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> <span class='keyword'>if</span> (!valid) {</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> locale-&gt;id = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> locale-&gt;name = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> locale-&gt;codeset, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='keyword'>if</span> (!mate_language_has_translations (locale-&gt;name) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> !mate_language_has_translations (locale-&gt;id) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> !mate_language_has_translations (locale-&gt;language_code) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it lacks translations"</span>, locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>if</span> (!utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> locale-&gt;id = <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> old_locale = g_hash_table_lookup (mate_available_locales_map, locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='keyword'>if</span> (old_locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> <span class='keyword'>if</span> (strlen (old_locale-&gt;name) &gt; strlen (locale-&gt;name)) {</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> g_hash_table_insert (mate_available_locales_map, <span class='macro'>g_strdup (locale-&gt;id)<span class='macro_popup'>g_strdup_inline (locale-&gt;id)</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line">select_dirs (<span class='keyword'>const</span> <span class='keyword'>struct</span> dirent *dirent)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>int</span> result = 0;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>if</span> (strcmp (dirent-&gt;d_name, <span class='string_literal'>"."</span>) != 0 &amp;&amp; strcmp (dirent-&gt;d_name, <span class='string_literal'>".."</span>) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> mode_t mode = 0;</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"><span class='directive'>#ifdef _DIRENT_HAVE_D_TYPE</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='keyword'>if</span> (dirent-&gt;d_type != <span class='macro'>DT_UNKNOWN<span class='macro_popup'>DT_UNKNOWN</span></span> &amp;&amp; dirent-&gt;d_type != <span class='macro'>DT_LNK<span class='macro_popup'>DT_LNK</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> mode = <span class='macro'>DTTOIF (dirent-&gt;d_type)<span class='macro_popup'>((dirent-&gt;d_type) &lt;&lt; 12)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> } <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>struct</span> stat st;</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, dirent-&gt;d_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_stat<span class='macro_popup'>stat</span></span> (path, &amp;st) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> mode = st.st_mode;</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> result = <span class='macro'>S_ISDIR (mode)<span class='macro_popup'>((((mode)) &amp; 0170000) == (0040000))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line">collect_locales_from_directory (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='keyword'>struct</span> dirent **dirents;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>int</span> ndirents;</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>int</span> cnt;</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> ndirents = scandir (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, &amp;dirents, select_dirs, alphasort);</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='keyword'>for</span> (cnt = 0; cnt &lt; ndirents; ++cnt) {</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>if</span> (add_locale (dirents[cnt]-&gt;d_name, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>if</span> (ndirents &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> free (dirents);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">collect_locales_from_localebin (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> <span class='keyword'>const</span> gchar *argv[] = { <span class='string_literal'>"locale"</span>, <span class='string_literal'>"-a"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> gchar **linep;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>g_auto (GStrv)<span class='macro_popup'>__attribute__((cleanup(glib_auto_cleanup_GStrv))) GStrv</span></span> lines = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> gchar *output = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>if</span> (g_spawn_sync (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, (gchar **) argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> G_SPAWN_SEARCH_PATH|G_SPAWN_STDERR_TO_DEV_NULL,</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;output, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='macro'>g_return_val_if_fail (output != NULL, FALSE)<span class='macro_popup'>do { if ((output != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "output != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> lines = g_strsplit (output, <span class='string_literal'>"\n"</span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='keyword'>if</span> (lines) {</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> linep = lines;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>while</span> (*linep) {</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>if</span> (*linep[0] &amp;&amp; add_locale (*linep, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> linep++;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">fill_count_map (GHashTable *count_map,</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>int</span> count;</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>if</span> (code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (count_map, code)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> + 1;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> count = 1;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> g_hash_table_insert (count_map, <span class='macro'>g_strdup (code)<span class='macro_popup'>g_strdup_inline (code)</span></span>, <span class='macro'>GINT_TO_POINTER (count)<span class='macro_popup'>((gpointer) (glong) (count))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line">count_languages_and_territories (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> gpointer value;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> mate_language_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> mate_territory_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> MateLocale *locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> fill_count_map (mate_language_count_map, locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> fill_count_map (mate_territory_count_map, locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">collect_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> gboolean found_localebin_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> gboolean found_dir_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> mate_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) mate_locale_free);</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> found_localebin_locales = collect_locales_from_localebin ();</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> found_dir_locales = collect_locales_from_directory ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>if</span> (!(found_localebin_locales || found_dir_locales)) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_warning (<span class='string_literal'>"Could not read list of available locales from libc, "</span></td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='string_literal'>"guessing possible locales from available translations, "</span></td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='string_literal'>"but list may be incomplete!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> count_languages_and_territories ();</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">get_language_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (mate_language_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_language_count_map, language)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line">is_unique_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> <span class='keyword'>return</span> get_language_count (language) == 1;</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line">get_territory_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='keyword'>if</span> (mate_territory_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_territory_count_map, territory)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line">is_unique_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> <span class='keyword'>return</span> get_territory_count (territory) == 1;</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line">is_fallback_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *fallback_language_names[] = { <span class='string_literal'>"C"</span>, <span class='string_literal'>"POSIX"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> <span class='keyword'>for</span> (i = 0; fallback_language_names[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>if</span> (strcmp (code, fallback_language_names[i]) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line">get_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 679, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Unspecified"</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_languages_map, code);</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">get_first_item_in_semicolon_list (<span class='keyword'>const</span> <span class='keyword'>char</span> *list)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='keyword'>char</span> **items;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>char</span> *item;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>/* Some entries in iso codes have multiple values, separated</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='comment'>* by semicolons. Not really sure which one to pick, so</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='comment'>* we just arbitrarily pick the first one.</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> items = g_strsplit (list, <span class='string_literal'>"; "</span>, 2);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> item = <span class='macro'>g_strdup (items[0])<span class='macro_popup'>g_strdup_inline (items[0])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> g_strfreev (items);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line">capitalize_utf8_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *str)</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>char</span> first[8] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (!str)</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first);</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> g_strconcat (first, g_utf8_offset_to_pointer (str, 1), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">get_translated_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language;</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> language = get_language (code);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>if</span> (language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_name;</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"Unspecified"</span>))<span class='macro_popup'>g_strdup_inline (gettext ("Unspecified"))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> translated_name = dgettext (<span class='string_literal'>"iso_639"</span>, language);</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_name);</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line">get_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 768, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_territories_map, code);</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">get_translated_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> territory = get_territory (code);</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='keyword'>if</span> (territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_territory;</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> translated_territory = dgettext (<span class='string_literal'>"iso_3166"</span>, territory);</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line">languages_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longB;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longT;</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_id;</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *lang_name;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>if</span> (! (<span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_entry"<br>)) == 0)</span></span> || <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_3_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_3_entry"<br>)) == 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> ccode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> ccode_longB = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> ccode_longT = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> ccode_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> lang_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_1_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_1_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> ccode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2B_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2B_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> ccode_longB = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2T_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2T_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> ccode_longT = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"id"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("id"))<br> == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> ccode_id = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> lang_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='keyword'>if</span> (lang_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='keyword'>if</span> (ccode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> <span class='macro'>g_strdup (ccode)<span class='macro_popup'>g_strdup_inline (ccode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (ccode_longB != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='macro'>g_strdup (ccode_longB)<span class='macro_popup'>g_strdup_inline (ccode_longB)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>if</span> (ccode_longT != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='macro'>g_strdup (ccode_longT)<span class='macro_popup'>g_strdup_inline (ccode_longT)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='keyword'>if</span> (ccode_id != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='macro'>g_strdup (ccode_id)<span class='macro_popup'>g_strdup_inline (ccode_id)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">territories_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_2;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_3;</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ncode;</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_name;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (! <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_3166_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_3166_entry"<br>)) == 0)</span></span> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> acode_2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> acode_3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> ncode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> territory_common_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> territory_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_2_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_2_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> acode_2 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_3_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_3_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> acode_3 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"numeric_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("numeric_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> ncode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"common_name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("common_name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> territory_common_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> territory_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> <span class='keyword'>if</span> (territory_common_name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> territory_name = territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>if</span> (territory_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> <span class='keyword'>if</span> (acode_2 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> <span class='macro'>g_strdup (acode_2)<span class='macro_popup'>g_strdup_inline (acode_2)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> <span class='keyword'>if</span> (acode_3 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> <span class='macro'>g_strdup (acode_3)<span class='macro_popup'>g_strdup_inline (acode_3)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> <span class='keyword'>if</span> (ncode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> <span class='macro'>g_strdup (ncode)<span class='macro_popup'>g_strdup_inline (ncode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line">languages_variant_init (<span class='keyword'>const</span> <span class='keyword'>char</span> *variant)</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> bindtextdomain (variant, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> bind_textdomain_codeset (variant, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filename = g_strdup_printf (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/%s.xml"</span>, variant);</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> res = g_file_get_contents (filename,</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> GMarkupParser parser = { languages_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line">languages_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='keyword'>if</span> (mate_languages_map)</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> mate_languages_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639_3"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line">territories_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='keyword'>if</span> (mate_territories_map)</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> bindtextdomain (<span class='string_literal'>"iso_3166"</span>, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> bind_textdomain_codeset (<span class='string_literal'>"iso_3166"</span>, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> mate_territories_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> res = g_file_get_contents (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> GMarkupParser parser = { territories_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>* mate_get_language_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>* Gets the language description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line">mate_get_language_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> GString *full_language;</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> full_language = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> <span class='keyword'>if</span> (language_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> <span class='keyword'>if</span> (translated_language == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> full_language = <span class='macro'>g_string_append (full_language, translated_language)<span class='macro_popup'>(__builtin_constant_p (translated_language) ? __extension__ (<br>{ const char * const __val = (translated_language); g_string_append_len_inline<br> (full_language, __val, (__val != ((void*)0)) ? (gssize) strlen<br> (((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_language, translated_language, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> <span class='keyword'>if</span> (is_unique_language (language_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class="mrange"><span class='keyword'>goto</span> out</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:17ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> <span class='keyword'>if</span> (territory_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> <span class='keyword'>if</span> (translated_territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> language_name_get_codeset_details (locale, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>if</span> (full_language-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='macro'>g_string_free (full_language, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_language), ((!(0)))) : g_string_free_and_steal (full_language<br>)) : (g_string_free) ((full_language), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_language, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_language<br>), ((0))) : g_string_free_and_steal (full_language)) : (g_string_free<br>) ((full_language), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='comment'>* mate_get_country_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='comment'>* Gets the country description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line">mate_get_country_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> GString *full_name;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> full_name = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='keyword'>if</span> (territory_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='macro'>g_string_append (full_name, translated_territory)<span class='macro_popup'>(__builtin_constant_p (translated_territory) ? __extension__ (<br>{ const char * const __val = (translated_territory); g_string_append_len_inline<br> (full_name, __val, (__val != ((void*)0)) ? (gssize) strlen (<br>((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_name, translated_territory, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (is_unique_territory (territory_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='keyword'>if</span> (language_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>if</span> (translated_language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> translated_language);</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> language_name_get_codeset_details (translation, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>if</span> (full_name-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='macro'>g_string_free (full_name, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_name), ((!(0)))) : g_string_free_and_steal (full_name))<br> : (g_string_free) ((full_name), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_name, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_name<br>), ((0))) : g_string_free_and_steal (full_name)) : (g_string_free<br>) ((full_name), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='comment'>* mate_get_all_locales:</span></td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> <span class='comment'>* Gets all locales.</span></td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='comment'>* Return value: (array zero-terminated=1) (element-type utf8) (transfer full):</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='comment'>* a newly allocated %NULL-terminated string array containing the</span></td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='comment'>* all locales. Free with g_strfreev().</span></td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">mate_get_all_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> gpointer key, value;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> GPtrArray *array;</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> array = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, &amp;key, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> g_ptr_array_add (array, <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> g_ptr_array_add (array, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> <span class='keyword'>return</span> (<span class='keyword'>char</span> **) g_ptr_array_free (array, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> <span class='comment'>* mate_get_language_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='comment'>* Gets the language name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line">mate_get_language_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> get_translated_language (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='comment'>* mate_get_country_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='comment'>* @code: an ISO 3166 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> <span class='comment'>* Gets the country name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line">mate_get_country_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> <span class='keyword'>return</span> get_translated_territory (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-d0e85f.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-d0e85f.html
new file mode 100644
index 0000000..fe64b7d
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-d0e85f.html
@@ -0,0 +1,4650 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-desktop-item.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-desktop-item.c -->
+
+<!-- FILENAME mate-desktop-item.c -->
+
+<!-- FUNCTIONNAME escape_string_and_dup -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT d0e85f14b1f86a84e7980883efd59ef5 -->
+
+<!-- BUGLINE 3136 -->
+
+<!-- BUGCOLUMN 9 -->
+
+<!-- BUGPATHLENGTH 24 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-desktop-item.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 3136, column 9</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-desktop-item.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-desktop-item.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"811": 1, "812": 1, "813": 1, "814": 1, "815": 1, "816": 1, "817": 1, "819": 1, "824": 1, "827": 1, "829": 1, "837": 1, "3099": 1, "3100": 1, "3101": 1, "3102": 1, "3103": 1, "3104": 1, "3106": 1, "3109": 1, "3110": 1, "3111": 1, "3112": 1, "3114": 1, "3115": 1, "3116": 1, "3117": 1, "3118": 1, "3131": 1, "3132": 1, "3133": 1, "3134": 1, "3135": 1, "3136": 1, "3138": 1, "3816": 1, "3817": 1, "3818": 1, "3819": 1, "3820": 1, "3821": 1, "3823": 1, "3824": 1, "3825": 1, "3826": 1, "3829": 1, "3830": 1, "3831": 1, "3832": 1, "3833": 1, "3834": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 54,52,48,43,42,39,37,34,32,29,27,26,21,18,16,15,11,7,4,4,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; c-set-style: linux indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/* mate-desktop-item.c - MATE Desktop File Representation</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>Copyright (C) 1999, 2000 Red Hat Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>Copyright (C) 2001 Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>All rights reserved.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>This file is part of the Mate Library.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>Developed by Elliot Lee &lt;[email protected]&gt; and Sid Vicious</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>The Mate Library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>The Mate Library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>License along with the Mate Library; see the file COPYING.LIB. If not,</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>Boston, MA 02110-1301, USA. */</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>@NOTATION@</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;limits.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;ctype.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define SN_API_NOT_YET_FROZEN</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;libsn/sn.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#undef MATE_DISABLE_DEPRECATED</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include &lt;mate-desktop-item.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include &lt;mate-desktop-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _MateDesktopItem {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>int</span> refcount;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='comment'>/* all languages used */</span></td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList *languages;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> MateDesktopItemType type;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>/* `modified' means that the ditem has been</span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>* modified since the last save. */</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gboolean modified;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>/* Keys of the main section only */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GList *sections;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>/* This includes ALL keys, including</span></td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>* other sections, separated by '/' */</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GHashTable *main_hash;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>char</span> *location;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='comment'>/* If mtime is set to this, set_location won't update mtime,</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='comment'>* this is to be used internally only. */</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='directive'>#define <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span> ((gint64)-2)</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GList *keys;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">} Section;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> ENCODING_UNKNOWN,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> ENCODING_UTF8,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> ENCODING_LEGACY_MIXED</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">} Encoding;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* IO reading utils, that look like the libc buffered io stuff</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='directive'>#define <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span> (32 * 1024)</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>char</span> *buf;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> gboolean buf_needs_free;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gboolean past_first_read;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gboolean eof;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> guint64 size;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">} ReadBuf;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> gboolean ditem_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> mate_desktop_item_set_location_gfile (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> GFile *file);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">readbuf_getc (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;eof)</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> rb-&gt;pos == rb-&gt;size) {</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> gssize bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> bytes_read = 0;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> bytes_read = g_input_stream_read (<span class='macro'>G_INPUT_STREAM (rb-&gt;stream)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_input_stream_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> rb-&gt;buf,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='comment'>/* FIXME: handle errors other than EOF */</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (bytes_read &lt;= 0) {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> rb-&gt;eof = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;size != 0)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> rb-&gt;past_first_read = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> rb-&gt;size = bytes_read;</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> (guchar) rb-&gt;buf[rb-&gt;pos++];</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='comment'>/* Note, does not include the trailing \n */</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">readbuf_gets (<span class='keyword'>char</span> *buf, gsize bufsize, ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gsize pos;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='macro'>g_return_val_if_fail (buf != NULL, NULL)<span class='macro_popup'>do { if ((buf != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "buf != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>g_return_val_if_fail (rb != NULL, NULL)<span class='macro_popup'>do { if ((rb != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "rb != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> buf[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> c = readbuf_getc (rb);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> || c == '\n')</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> buf[pos++] = c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> } <span class='keyword'>while</span> (pos &lt; bufsize-1);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; pos == 0)</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> buf[pos++] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='keyword'>return</span> buf;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">readbuf_open (GFile *file, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFileInputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> stream = g_file_read (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error reading file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error reading file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> rb-&gt;stream = stream;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> rb-&gt;file = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> rb-&gt;uri = uri;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> rb-&gt;buf = g_malloc (<span class='macro'>READ_BUF_SIZE<span class='macro_popup'>(32 * 1024)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> rb-&gt;buf_needs_free = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='comment'>/* rb-&gt;size = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"><span class='keyword'>static</span> ReadBuf *</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">readbuf_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri, <span class='keyword'>const</span> <span class='keyword'>char</span> *string, gssize length)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= 0, NULL)<span class='macro_popup'>do { if ((length &gt;= 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> rb = <span class='macro'>g_new0 (ReadBuf, 1)<span class='macro_popup'>((ReadBuf *) g_malloc0_n ((1), sizeof (ReadBuf)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>/* rb-&gt;file = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* rb-&gt;stream = NULL; */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> rb-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> rb-&gt;buf = (<span class='keyword'>char</span> *) string;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>/* rb-&gt;buf_needs_free = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>/* rb-&gt;past_first_read = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* rb-&gt;eof = FALSE; */</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> rb-&gt;size = length;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>/* rb-&gt;pos = 0; */</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>return</span> rb;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">readbuf_rewind (ReadBuf *rb, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GError *local_error;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> rb-&gt;eof = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> rb-&gt;pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (!rb-&gt;past_first_read)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> rb-&gt;size = 0;</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (g_seekable_seek (<span class='macro'>G_SEEKABLE (rb-&gt;stream)<span class='macro_popup'>((((GSeekable*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((rb-&gt;stream)), ((g_seekable_get_type ()))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> 0, G_SEEK_SET, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> local_error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> rb-&gt;stream = g_file_read (rb-&gt;file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;local_error);</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> g_set_error (</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> error, <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Error rewinding file '%s': %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Error rewinding file '%s': %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> rb-&gt;uri, local_error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_error_free (local_error);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line">readbuf_close (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;stream != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g_object_unref (rb-&gt;stream);</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_object_unref (rb-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g_free (rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;buf_needs_free)</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (rb-&gt;buf);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> g_free (rb);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">type_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *type)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>if</span> (!type)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>switch</span> (type [0]) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>case</span> 'A':</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Application"</span>))</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>case</span> 'L':</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Link"</span>))</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_LINK;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"FSDevice"</span>))</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='keyword'>case</span> 'M':</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"MimeType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Directory"</span>))</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>case</span> 'S':</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"Service"</span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strcmp (type, <span class='string_literal'>"ServiceType"</span>))</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_TYPE_OTHER;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* mate_desktop_item_new:</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='comment'>* Creates a MateDesktopItem object. The reference count on the returned value is set to '1'.</span></td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* Returns: The new MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">mate_desktop_item_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> _mate_desktop_init_i18n ();</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> retval = <span class='macro'>g_new0 (MateDesktopItem, 1)<span class='macro_popup'>((MateDesktopItem *) g_malloc0_n ((1), sizeof (MateDesktopItem<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> retval-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>/* These are guaranteed to be set */</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned</span></td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>* here is the name of an application or</span></td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>* a document */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No name"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No name"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_desktop_item_set_string (retval,</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='string_literal'>"1.0"</span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> retval-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">dup_section (Section *sec)</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> Section *retval = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> retval-&gt;name = <span class='macro'>g_strdup (sec-&gt;name)<span class='macro_popup'>g_strdup_inline (sec-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> retval-&gt;keys = g_list_copy (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">copy_string_hash (gpointer key, gpointer value, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GHashTable *copy = user_data;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> g_hash_table_replace (copy,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>* mate_desktop_item_copy:</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='comment'>* @item: The item to be copied</span></td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* Creates a copy of a MateDesktopItem. The new copy has a refcount of 1.</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* Note: Section stack is NOT copied.</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='comment'>* Returns: The new copy</span></td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">mate_desktop_item_copy (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> retval = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> retval-&gt;type = item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> retval-&gt;modified = item-&gt;modified;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> retval-&gt;location = <span class='macro'>g_strdup (item-&gt;location)<span class='macro_popup'>g_strdup_inline (item-&gt;location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> retval-&gt;mtime = item-&gt;mtime;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> retval-&gt;launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='comment'>/* Languages */</span></td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> retval-&gt;languages = g_list_copy (item-&gt;languages);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='comment'>/* Keys */</span></td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> retval-&gt;keys = g_list_copy (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> li-&gt;data = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>/* Sections */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> retval-&gt;sections = g_list_copy (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>for</span> (li = retval-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> li-&gt;data = dup_section (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> retval-&gt;main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (GDestroyNotify) g_free);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> g_hash_table_foreach (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> copy_string_hash,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> retval-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line">read_sort_order (MateDesktopItem *item, GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>char</span> buf[<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".order"</span>);</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> rb = readbuf_open (child, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='keyword'>if</span> (str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> str = g_string_new (buf);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>g_string_append (str, buf)<span class='macro_popup'>(__builtin_constant_p (buf) ? __extension__ ({ const char * const<br> __val = (buf); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, buf, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='macro'>g_string_append_c (str, ';')<span class='macro_popup'>g_string_append_c_inline (str, ';')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> mate_desktop_item_set_string (item, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>g_string_free (str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(str), ((!(0)))) : g_string_free_and_steal (str)) : (g_string_free<br>) ((str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line">make_fake_directory (GFile *dir)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> mate_desktop_item_set_entry_type (item,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> MATE_DESKTOP_ITEM_TYPE_DIRECTORY);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> item-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>; <span class='comment'>/* it doesn't exist, we know that */</span></td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> child = g_file_get_child (dir, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> mate_desktop_item_set_location_gfile (item, child);</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> read_sort_order (item, dir);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_file:</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>* @file: The filename or directory path to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>* This function loads 'file' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">mate_desktop_item_new_from_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *file,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> retval = mate_desktop_item_new_from_gfile (gfile, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* @uri: URI to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* This function loads 'uri' and turns it into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">mate_desktop_item_new_from_uri (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((uri != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> retval = mate_desktop_item_new_from_gfile (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line">mate_desktop_item_new_from_gfile (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> GFile *subfn;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> GFile *parent;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gint64 mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_val_if_fail (file != NULL, NULL)<span class='macro_popup'>do { if ((file != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "file != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span><span class='string_literal'>","</span><span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp; type != G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='comment'>/* FIXME: better errors */</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_INVALID_TYPE,</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"File '%s' is not a regular file or directory."</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "File '%s' is not a regular file or directory."<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> uri);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> GFile *child;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> GFileInfo *child_info;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> child = g_file_get_child (file, <span class='string_literal'>".directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> child_info = g_file_query_info (child,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>if</span> (child_info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> g_object_unref (child);</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>return</span> make_fake_directory (file);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (child_info,</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_object_unref (child_info);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> subfn = child;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> subfn = g_file_dup (file);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> rb = readbuf_open (subfn, error);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (rb == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>if</span> (flags &amp; MATE_DESKTOP_ITEM_LOAD_ONLY_IF_EXISTS &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> ! mate_desktop_item_exists (retval)) {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> mate_desktop_item_unref (retval);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> retval-&gt;mtime = <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> mate_desktop_item_set_location_gfile (retval, subfn);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> retval-&gt;mtime = mtime;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> parent = g_file_get_parent (file);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (parent != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> read_sort_order (retval, parent);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_object_unref (subfn);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_string:</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* @string: string to load the MateDesktopItem from</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>* @length: length of string, or -1 to use strlen</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* @error: place to put errors</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='comment'>* This function turns the contents of the string into a MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">mate_desktop_item_new_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *uri,</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> gssize length,</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> ReadBuf *rb;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (string != NULL, NULL)<span class='macro_popup'>do { if ((string != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "string != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (length &gt;= -1, NULL)<span class='macro_popup'>do { if ((length &gt;= -1)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "length &gt;= -1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (length == -1) {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> length = strlen (string);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> rb = readbuf_new_from_string (uri, string, length);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> retval = ditem_load (rb,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LOAD_NO_TRANSLATIONS) != 0,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (retval == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>/* FIXME: Sort order? */</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line">lookup_desktop_file_in_data_dir (<span class='keyword'>const</span> <span class='keyword'>char</span> *desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> path = g_build_filename (data_dir, <span class='string_literal'>"applications"</span>, desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (path, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">file_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *user_data_dir;</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='keyword'>char</span> *retval;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> user_data_dir = g_get_user_data_dir ();</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, user_data_dir))) {</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>for</span> (i = 0; system_data_dirs[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>if</span> ((retval = lookup_desktop_file_in_data_dir (basename, system_data_dirs[i]))) {</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='comment'>* mate_desktop_item_new_from_basename:</span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='comment'>* @basename: The basename of the MateDesktopItem to load.</span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='comment'>* @flags: Flags to influence the loading process</span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='comment'>* This function loads 'basename' from a system data directory and</span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='comment'>* returns its MateDesktopItem.</span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='comment'>* Returns: The newly loaded item.</span></td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">mate_desktop_item_new_from_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *basename,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> MateDesktopItemLoadFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> MateDesktopItem *retval;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> <span class='keyword'>char</span> *file;</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='macro'>g_return_val_if_fail (basename != NULL, NULL)<span class='macro_popup'>do { if ((basename != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "basename != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!(file = file_from_basename (basename))) {</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_CANNOT_OPEN,</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Cannot find file '%s'"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Cannot find file '%s'"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> basename);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> retval = mate_desktop_item_new_from_file (file, flags, error);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> g_free (file);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>* mate_desktop_item_save:</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='comment'>* @under: A new uri (location) for this #MateDesktopItem</span></td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='comment'>* @force: Save even if it wasn't modified</span></td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='comment'>* @error: #GError return</span></td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='comment'>* Writes the specified item to disk. If the 'under' is NULL, the original</span></td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='comment'>* location is used. It sets the location of this entry to point to the</span></td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>* new location.</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>* Returns: boolean. %TRUE if the file was saved, %FALSE otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">mate_desktop_item_save (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *under,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> gboolean force,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span id="start53"><span class='keyword'>const</span></span> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span id="start52"><span id="end53"><span class='keyword'>if</span></span></span> (<span id="start51"><span class="mrange"><span id="end52">under</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'under' is not equal to NULL</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> ! force &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> ! item-&gt;modified)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span id="start50"><span id="end51"><span class='keyword'>if</span></span></span> (<span id="start49"><span id="end50"><span class='variable'>under<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>1.1</div></td><td>'under' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> uri = item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span id="start46"><span id="end47"><span id="start48"><span id="end49">uri</span></span></span></span> = <span id="start47"><span id="end48">under</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span id="start45"><span id="end46"><span class='keyword'>if</span></span></span> (<span id="start44"><span id="end45"><span class='variable'>uri<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>2.1</div></td><td>'uri' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_FILENAME,</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No filename to save to"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No filename to save to"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span id="start43"><span id="end44"><span class='keyword'>if</span></span></span> ( ! <span class="mrange"><span id="end42">ditem_save</span> (<span id="start42"><span id="end43">item</span></span>, uri, error)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'ditem_save'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> item-&gt;mtime = g_get_real_time () / <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>* mate_desktop_item_ref:</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='comment'>* Description: Increases the reference count of the specified item.</span></td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='comment'>* Returns: the newly referenced @item</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line">MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line">mate_desktop_item_ref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item-&gt;refcount++;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line">free_section (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> Section *section = data;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_free (section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> section-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_list_free_full (section-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> g_free (section);</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='comment'>* mate_desktop_item_unref:</span></td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='comment'>* Decreases the reference count of the specified item, and destroys the item if there are no more references left.</span></td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line">mate_desktop_item_unref (MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> item-&gt;refcount--;</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>if</span>(item-&gt;refcount != 0)</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_list_free_full (item-&gt;languages, g_free);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> item-&gt;languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> g_list_free_full (item-&gt;keys, g_free);</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> g_list_free_full (item-&gt;sections, (GDestroyNotify) free_section);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> item-&gt;sections = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> g_hash_table_destroy (item-&gt;main_hash);</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> item-&gt;main_hash = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> item-&gt;location = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_free (item);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line">find_section (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>if</span> (strcmp (section, <span class='string_literal'>"Desktop Entry"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> sec = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> <span class='keyword'>if</span> (strcmp (sec-&gt;name, section) == 0)</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> sec = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> sec-&gt;name = <span class='macro'>g_strdup (section)<span class='macro_popup'>g_strdup_inline (section)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> item-&gt;sections = g_list_append (item-&gt;sections, sec);</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='comment'>/* Don't mark the item modified, this is just an empty section,</span></td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='comment'>* it won't be saved even */</span></td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"><span class='keyword'>static</span> Section *</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line">section_from_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (key == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> p = strchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> name = g_strndup (key, p - key);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> sec = find_section (item, name);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> sec;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line">key_basename (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> <span class='keyword'>char</span> *p = strrchr (key, '/');</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='keyword'>return</span> p+1;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span> key;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">lookup (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line">lookup_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='keyword'>return</span> lookup (item, key);</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> ret = lookup (item, full);</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">lookup_best_locale (<span class='keyword'>const</span> MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> ret = lookup_locale (item, key, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>if</span> (ret != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line">set (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> Section *sec = section_from_key (item, key);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (sec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> sec-&gt;keys = g_list_append</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> (sec-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>g_strdup (key_basename (key))<span class='macro_popup'>g_strdup_inline (key_basename (key))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (sec-&gt;keys, key_basename (key),</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> sec-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> g_list_delete_link (sec-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, key) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> item-&gt;keys = g_list_append (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> GList *list = g_list_find_custom</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> (item-&gt;keys, key, (GCompareFunc)strcmp);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_free (list-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> item-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> g_list_delete_link (item-&gt;keys, list);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line">set_locale (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> set (item, key, value);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s[%s]"</span>, key, locale);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> set (item, full, value);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='comment'>/* add the locale to the list of languages if it wasn't there</span></td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* before */</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> item-&gt;languages = g_list_prepend (item-&gt;languages,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>g_strdup (locale)<span class='macro_popup'>g_strdup_inline (locale)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">list_to_vector (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='keyword'>int</span> len = g_slist_length (list);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> argv = <span class='macro'>g_new0 (<span class='keyword'>char</span> *, len+1)<span class='macro_popup'>((char * *) g_malloc0_n ((len+1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>for</span> (i = 0, li = list;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> li = li-&gt;next, i++) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> argv[i] = <span class='macro'>g_strdup (li-&gt;data)<span class='macro_popup'>g_strdup_inline (li-&gt;data)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> argv[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>return</span> argv;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"><span class='keyword'>static</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line">make_args (GList *files)</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> GSList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class='keyword'>for</span> (li = files; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *file = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> gfile = g_file_new_for_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> list = g_slist_prepend (list, gfile);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='keyword'>return</span> g_slist_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line">free_args (GSList *list)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> GSList *li;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>for</span> (li = list; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_unref (<span class='macro'>G_FILE (li-&gt;data)<span class='macro_popup'>((((GFile*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((li-&gt;data)), ((g_file_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">escape_single_quotes (<span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> gboolean in_double_quotes)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GString *gs;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *pre = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *post = <span class='string_literal'>""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; ! in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> pre = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> post = <span class='string_literal'>"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ( ! in_single_quotes &amp;&amp; in_double_quotes) {</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> pre = <span class='string_literal'>"\"'"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> post = <span class='string_literal'>"'\""</span>;</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (strchr (s, '\'') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='keyword'>return</span> g_strconcat (pre, s, post, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gs = g_string_new (pre);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (*p == '\'')</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>g_string_append (gs, <span class='string_literal'>"'\\''"</span>)<span class='macro_popup'>(__builtin_constant_p ("'\\''") ? __extension__ ({ const char<br> * const __val = ("'\\''"); g_string_append_len_inline (gs, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (gs, "'\\''"<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='macro'>g_string_append (gs, post)<span class='macro_popup'>(__builtin_constant_p (post) ? __extension__ ({ const char * const<br> __val = (post); g_string_append_len_inline (gs, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (gs, post, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> URI_TO_LOCAL_BASENAME</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">} ConversionType;</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line">convert_uri (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> ConversionType conversion)</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>switch</span> (conversion) {</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='keyword'>case</span> URI_TO_STRING:</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> retval = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_PATH:</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> retval = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_DIRNAME:</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='keyword'>char</span> *local_path;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> local_path = g_file_get_path (file);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> retval = g_path_get_dirname (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> g_free (local_path);</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>case</span> URI_TO_LOCAL_BASENAME:</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> retval = g_file_get_basename (file);</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-desktop-item.c"<br>, 1203, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> ADDED_NONE = 0,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> ADDED_SINGLE,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> ADDED_ALL</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line">} AddedStatus;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line">append_all_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='keyword'>for</span> (l = args; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>char</span> *converted;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (!(converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>" "</span>)<span class='macro_popup'>(__builtin_constant_p (" ") ? __extension__ ({ const char * const<br> __val = (" "); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, " ", (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> escaped = escape_single_quotes (converted,</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>return</span> ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"><span class='keyword'>static</span> AddedStatus</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">append_first_converted (GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> ConversionType conversion,</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> AddedStatus added_status)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>char</span> *converted = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='keyword'>char</span> *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>for</span> (l = *arg_ptr; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>if</span> ((converted = convert_uri (l-&gt;data, conversion)))</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> *arg_ptr = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='keyword'>if</span> (!converted)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>return</span> added_status;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> escaped = escape_single_quotes (converted, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='macro'>g_string_append (str, escaped)<span class='macro_popup'>(__builtin_constant_p (escaped) ? __extension__ ({ const char<br> * const __val = (escaped); g_string_append_len_inline (str, __val<br>, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !(__val<br>))) : (gssize) -1); }) : g_string_append_len_inline (str, escaped<br>, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> g_free (converted);</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> <span class='keyword'>return</span> added_status != ADDED_ALL ? ADDED_SINGLE : added_status;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">do_percent_subst (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *arg,</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> GString *str,</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> gboolean in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> gboolean in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> <span class='keyword'>char</span> *esc;</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cs;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='keyword'>if</span> (arg[0] != '%' || arg[1] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='keyword'>switch</span> (arg[1]) {</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='keyword'>case</span> '%':</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>case</span> 'U':</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>case</span> 'F':</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>case</span> 'N':</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>case</span> 'D':</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> *added_status = append_all_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> args,</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> <span class='keyword'>case</span> 'f':</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> URI_TO_LOCAL_PATH,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> 'u':</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> URI_TO_STRING,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='keyword'>case</span> 'd':</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> URI_TO_LOCAL_DIRNAME,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> *added_status = append_first_converted (str,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> URI_TO_LOCAL_BASENAME,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> in_single_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> in_double_quotes,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> *added_status);</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>case</span> 'm':</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says this is deprecated</span></td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> <span class='comment'>* and replace with --miniicon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_MINI_ICON<span class='macro_popup'>"MiniIcon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--miniicon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--miniicon=") ? __extension__ ({ const<br> char * const __val = ("--miniicon="); g_string_append_len_inline<br> (str, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val<br>) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "--miniicon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> <span class='keyword'>case</span> 'i':</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> <span class='comment'>/* Note: v0.9.4 of the spec says replace with --icon iconname */</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> cs = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"--icon="</span>)<span class='macro_popup'>(__builtin_constant_p ("--icon=") ? __extension__ ({ const char<br> * const __val = ("--icon="); g_string_append_len_inline (str<br>, __val, (__val != ((void*)0)) ? (gssize) strlen (((__val) + !<br>(__val))) : (gssize) -1); }) : g_string_append_len_inline (str<br>, "--icon=", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='keyword'>case</span> 'c':</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>case</span> 'k':</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> esc = escape_single_quotes (item-&gt;location, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>case</span> 'v':</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> cs = mate_desktop_item_get_localestring (item, <span class='macro'>MATE_DESKTOP_ITEM_DEV<span class='macro_popup'>"Dev"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='keyword'>if</span> (cs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> esc = escape_single_quotes (cs, in_single_quotes, in_double_quotes);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> <span class='macro'>g_string_append (str, esc)<span class='macro_popup'>(__builtin_constant_p (esc) ? __extension__ ({ const char * const<br> __val = (esc); g_string_append_len_inline (str, __val, (__val<br> != ((void*)0)) ? (gssize) strlen (((__val) + !(__val))) : (gssize<br>) -1); }) : g_string_append_len_inline (str, esc, (gssize) -1<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> g_free (esc);</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='comment'>/* Maintain special characters - e.g. "%20" */</span></td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_ascii_isdigit (arg [1])<span class='macro_popup'>((g_ascii_table[(guchar) (arg [1])] &amp; G_ASCII_DIGIT) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> <span class='macro'>g_string_append_c (str, '%')<span class='macro_popup'>g_string_append_c_inline (str, '%')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line">expand_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s,</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> GSList *args,</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> GSList **arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> AddedStatus *added_status)</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> gboolean escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> gboolean single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> gboolean double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> GString *gs = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> <span class='keyword'>for</span> (p = s; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (escape) {</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> escape = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\\') {</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot)</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> escape = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '\'') {</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> single_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (single_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> single_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '"') {</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> <span class='keyword'>if</span> ( ! single_quot &amp;&amp; ! double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> double_quot = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (double_quot) {</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> double_quot = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (*p == '%') {</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='keyword'>if</span> (do_percent_subst (item, p, gs,</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> single_quot, double_quot,</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> args, arg_ptr,</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> added_status)) {</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='macro'>g_string_append_c (gs, *p)<span class='macro_popup'>g_string_append_c_inline (gs, *p)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (gs, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((gs),<br> ((0))) : g_string_free_and_steal (gs)) : (g_string_free) ((gs<br>), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"><span class='comment'>/*Functions in this code block should only ever be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line">sn_error_trap_push (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line">sn_error_trap_pop (SnDisplay *display,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> Display *xdisplay)</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line">make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>int</span> i, j;</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>int</span> desktop_startup_id_len;</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> ;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, i + 2)<span class='macro_popup'>((char * *) g_malloc_n ((i + 2), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> desktop_startup_id_len = strlen (<span class='string_literal'>"DESKTOP_STARTUP_ID"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='keyword'>for</span> (i = 0, j = 0; envp[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp[i], <span class='string_literal'>"DESKTOP_STARTUP_ID"</span>, desktop_startup_id_len) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> retval[j] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> retval[j] = g_strdup_printf (<span class='string_literal'>"DESKTOP_STARTUP_ID=%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> sn_launcher_context_get_startup_id (sn_context));</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> ++j;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> retval[j] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"><span class='comment'>/* This should be fairly long, as it's confusing to users if a startup</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='comment'>* ends when it shouldn't (it appears that the startup failed, and</span></td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='comment'>* they have to relaunch the app). Also the timeout only matters when</span></td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> <span class='comment'>* there are bugs and apps don't end their own startup sequence.</span></td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>* This timeout is a "last resort" timeout that ignores whether the</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* startup sequence has shown activity or not. Marco and the</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>* tasklist have smarter, and correspondingly able-to-be-shorter</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='comment'>* timeouts. The reason our timeout is dumb is that we don't monitor</span></td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='comment'>* the sequence (don't use an SnMonitorContext)</span></td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> 30 /* seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"><span class='directive'>#define <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span> (<span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span> * 1000)</span></td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> GSList *contexts;</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> guint timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line">} StartupTimeoutData;</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">free_startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> g_slist_free_full (std-&gt;contexts, (GDestroyNotify) sn_launcher_context_unref);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (std-&gt;timeout_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_source_remove (std-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> g_free (std);</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line">startup_timeout (<span class='keyword'>void</span> *data)</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> StartupTimeoutData *std = data;</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GSList *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> <span class='keyword'>int</span> min_timeout;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> min_timeout = <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> gint64 now = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> GTimeVal now;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> g_get_current_time (&amp;now);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> tmp = std-&gt;contexts;</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>while</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> SnLauncherContext *sn_context = tmp-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> GSList *next = tmp-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> time_t tv_sec;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> suseconds_t tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context, &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> tv = (tv_sec * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>) + tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> elapsed = (<span class='keyword'>double</span>) (now - tv) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>long</span> tv_sec, tv_usec;</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> sn_launcher_context_get_last_active_time (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> &amp;tv_sec, &amp;tv_usec);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> elapsed =</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> ((((<span class='keyword'>double</span>)now.tv_sec - tv_sec) * <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span> +</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> (now.tv_usec - tv_usec))) / 1000.0;</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (elapsed &gt;= <span class='macro'>STARTUP_TIMEOUT_LENGTH<span class='macro_popup'>(30 * 1000)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> std-&gt;contexts = g_slist_remove (std-&gt;contexts,</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> sn_launcher_context_complete (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> min_timeout = <span class='macro'>MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed))<span class='macro_popup'>(((min_timeout) &lt; (((30 * 1000) - elapsed))) ? (min_timeout<br>) : (((30 * 1000) - elapsed)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> tmp = next;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='comment'>/* we'll use seconds for the timeout */</span></td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> <span class='keyword'>if</span> (min_timeout &lt; 1000)</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> min_timeout = 1000;</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> <span class='keyword'>if</span> (std-&gt;contexts == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> std-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> std-&gt;timeout_id = g_timeout_add_seconds (min_timeout / 1000,</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> std);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>/* always remove this one, but we may have reinstalled another one. */</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line">add_startup_timeout (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> SnLauncherContext *sn_context)</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> StartupTimeoutData *data;</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> data = g_object_get_data (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> data = <span class='macro'>g_new (StartupTimeoutData, 1)<span class='macro_popup'>((StartupTimeoutData *) g_malloc_n ((1), sizeof (StartupTimeoutData<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> data-&gt;screen = screen;</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> data-&gt;contexts = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> data-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (screen)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((screen)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-startup-data"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> data, free_startup_timeout);</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> sn_launcher_context_ref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> data-&gt;contexts = g_slist_prepend (data-&gt;contexts, sn_context);</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> <span class='keyword'>if</span> (data-&gt;timeout_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> data-&gt;timeout_id = g_timeout_add_seconds (</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>STARTUP_TIMEOUT_LENGTH_SEC<span class='macro_popup'>30</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> startup_timeout,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION - functions should only be reached in x11*/</span></td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">stringify_uris (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> append_all_converted (str, URI_TO_STRING, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line">stringify_files (GSList *args)</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> str = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> append_all_converted (str, URI_TO_LOCAL_PATH, args, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, ADDED_NONE);</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line">make_environment_for_screen (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> <span class='keyword'>char</span> **envp)</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>char</span> **retval;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> <span class='keyword'>char</span> **freeme;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>char</span> *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='keyword'>int</span> display_index = -1;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> <span class='keyword'>int</span> i, env_len;</td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> <span class='macro'>g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL)<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((screen)); GType __t = ((gdk_screen_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "GDK_IS_SCREEN (screen)"); return (((void*)0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> retval = freeme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> <span class='keyword'>if</span> (envp == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> envp = freeme = g_listenv ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>for</span> (i = 0; envp [i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>char</span> *name = envp[i];</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> envp[i] = g_strjoin (<span class='string_literal'>"="</span>, name, g_getenv (name), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> <span class='keyword'>for</span> (env_len = 0; envp [env_len]; env_len++)</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> <span class='keyword'>if</span> (strncmp (envp [env_len], <span class='string_literal'>"DISPLAY"</span>, strlen (<span class='string_literal'>"DISPLAY"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> display_index = env_len;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> retval = <span class='macro'>g_new (<span class='keyword'>char</span> *, env_len + 1)<span class='macro_popup'>((char * *) g_malloc_n ((env_len + 1), sizeof (char *)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> retval [env_len] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> display_name = <span class='macro'>g_strdup (gdk_display_get_name (display))<span class='macro_popup'>g_strdup_inline (gdk_display_get_name (display))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; env_len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (i == display_index)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> retval [i] = g_strconcat (<span class='string_literal'>"DISPLAY="</span>, display_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> retval [i] = <span class='macro'>g_strdup (envp[i])<span class='macro_popup'>g_strdup_inline (envp[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='macro'>g_assert (i == env_len)<span class='macro_popup'>do { if (i == env_len) ; else g_assertion_message_expr ("MateDesktop"<br>, "mate-desktop-item.c", 1728, ((const char*) (__func__)), "i == env_len"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> g_free (display_name);</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> g_strfreev (freeme);</td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line">dummy_child_watch (GPid pid,</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> gint status,</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> <span class='comment'>/* Nothing, this is just to ensure we don't double fork</span></td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='comment'>* and break pkexec:</span></td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=675789</span></td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">ditem_execute (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec,</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> gboolean launch_only_one,</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> gboolean use_current_dir,</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> gboolean append_uris,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> gboolean append_paths,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> gboolean do_not_reap_child,</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> <span class='keyword'>char</span> **free_me = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> <span class='keyword'>char</span> **real_argv;</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>int</span> i, ret;</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> <span class='keyword'>char</span> **term_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> <span class='keyword'>int</span> term_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> GSList *vector_list;</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> GSList *args, *arg_ptr;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> AddedStatus added_status;</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>char</span> **temp_argv = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> <span class='keyword'>int</span> temp_argc = 0;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='keyword'>char</span> *new_exec, *uris, *temp;</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='keyword'>char</span> *exec_locale;</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> <span class='keyword'>int</span> launched = 0;</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> GPid pid;</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> SnLauncherContext *sn_context;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> SnDisplay *sn_display;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *startup_class;</td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> <span class='macro'>g_return_val_if_fail (item, -1)<span class='macro_popup'>do { if ((item)) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "item"); return (-1); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> working_dir = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_PATH<span class='macro_popup'>"Path"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='keyword'>if</span> (working_dir &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> !g_file_test (working_dir, G_FILE_TEST_IS_DIR))</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> working_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span class='keyword'>if</span> (working_dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !use_current_dir)</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> working_dir = g_get_home_dir ();</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span class='keyword'>if</span> (mate_desktop_item_get_boolean (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *options =</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL_OPTIONS<span class='macro_popup'>"TerminalOptions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> <span class='keyword'>if</span> (options != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_shell_parse_argv (options,</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> &amp;term_argc,</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> &amp;term_argv,</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> <span class='comment'>/* error */</span>);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='comment'>/* ignore errors */</span></td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> mate_desktop_prepend_terminal_to_vector (&amp;term_argc, &amp;term_argv);</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> args = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> arg_ptr = make_args (file_list);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> GdkDisplay *display = gdk_screen_get_display (gdk_screen_get_default());</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> <span class='keyword'>if</span> (screen)</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> gdkdisplay = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> sn_display = sn_display_new (<span class='macro'>GDK_DISPLAY_XDISPLAY (gdkdisplay)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdkdisplay))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> sn_error_trap_push,</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> sn_error_trap_pop);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='comment'>/* Only initiate notification if desktop file supports it.</span></td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> <span class='comment'>* (we could avoid setting up the SnLauncherContext if we aren't going</span></td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='comment'>* to initiate, but why bother)</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> startup_class = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"StartupWMClass"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> <span class='keyword'>if</span> (startup_class ||</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> mate_desktop_item_get_boolean (item, <span class='string_literal'>"StartupNotify"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> sn_context = sn_launcher_context_new (sn_display,</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> screen ? gdk_x11_screen_get_screen_number (screen) :</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> <span class='macro'>DefaultScreen (GDK_DISPLAY_XDISPLAY (gdkdisplay))<span class='macro_popup'>(((_XPrivDisplay)((gdk_x11_display_get_xdisplay (gdkdisplay))<br>))-&gt;default_screen)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> name = mate_desktop_item_get_localestring (item,</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_GENERIC_NAME<span class='macro_popup'>"GenericName"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> <span class='keyword'>if</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='keyword'>char</span> *description;</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> sn_launcher_context_set_name (sn_context, name);</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> description = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Starting %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Starting %s"))</span></span>, name);</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> sn_launcher_context_set_description (sn_context, description);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> g_free (description);</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> icon = mate_desktop_item_get_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>if</span> (icon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> sn_launcher_context_set_icon_name (sn_context, icon);</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> sn_launcher_context_set_workspace (sn_context, workspace);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (startup_class != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> sn_launcher_context_set_wmclass (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> startup_class);</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> sn_context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> sn_display = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> <span class='keyword'>if</span> (screen) {</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> envp = make_environment_for_screen (screen, envp);</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> exec_locale = g_filename_from_utf8 (exec, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> <span class='keyword'>if</span> (exec_locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> exec_locale = <span class='macro'>g_strdup (<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> added_status = ADDED_NONE;</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> new_exec = expand_string (item,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> exec_locale,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> args, &amp;arg_ptr, &amp;added_status);</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_uris) {</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> uris = stringify_uris (args);</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> <span class='comment'>/* append_uris and append_paths are mutually exlusive */</span></td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='keyword'>if</span> (launched == 0 &amp;&amp; added_status == ADDED_NONE &amp;&amp; append_paths) {</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> uris = stringify_files (args);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> temp = g_strconcat (new_exec, <span class='string_literal'>" "</span>, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> g_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> new_exec = temp;</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> added_status = ADDED_ALL;</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> <span class='keyword'>if</span> (launched &gt; 0 &amp;&amp; added_status == ADDED_NONE) {</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (new_exec,</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> &amp;temp_argc, &amp;temp_argv, error)) {</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> <span class='comment'>/* The error now comes from g_shell_parse_argv */</span></td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> g_free (new_exec);</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> vector_list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; term_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='macro'>g_strdup (term_argv[i])<span class='macro_popup'>g_strdup_inline (term_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span class='keyword'>for</span>(i = 0; i &lt; temp_argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> vector_list = g_slist_append (vector_list,</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> <span class='macro'>g_strdup (temp_argv[i])<span class='macro_popup'>g_strdup_inline (temp_argv[i])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> g_strfreev (temp_argv);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> real_argv = list_to_vector (vector_list);</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_slist_free_full (vector_list, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> <span class='keyword'>if</span> (sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> !sn_launcher_context_get_initiated (sn_context)) {</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> guint32 launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> <span class='comment'>/* This means that we always use the first real_argv[0]</span></td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> <span class='comment'>* we select for the "binary name", but it's probably</span></td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='comment'>* OK to do that. Binary name isn't super-important</span></td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> <span class='comment'>* anyway, and we can't initiate twice, and we</span></td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> <span class='comment'>* must initiate prior to fork/exec.</span></td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> sn_launcher_context_set_binary_name (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> real_argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='keyword'>if</span> (item-&gt;launch_time &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> launch_time = item-&gt;launch_time;</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> launch_time = gdk_x11_display_get_user_time (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> sn_launcher_context_initiate (sn_context,</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> g_get_prgname () ? g_get_prgname () : <span class='string_literal'>"unknown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> real_argv[0],</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> launch_time);</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='comment'>/* Don't allow accidental reuse of same timestamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> ((MateDesktopItem *)item)-&gt;launch_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> envp = make_spawn_environment_for_sn_context (sn_context, envp);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> free_me = envp;</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span class='keyword'>if</span> ( ! g_spawn_async (working_dir,</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> real_argv,</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> envp,</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> (do_not_reap_child ? G_SPAWN_DO_NOT_REAP_CHILD : 0) | G_SPAWN_SEARCH_PATH <span class='comment'>/* flags */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func */</span></td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* child_setup_func_data */</span></td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> (do_not_reap_child ? &amp;pid : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='comment'>/* child_pid */</span>,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> error)) {</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='comment'>/* The error was set for us,</span></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='comment'>* we just can't launch this thingie */</span></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (do_not_reap_child) {</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> g_child_watch_add (pid, dummy_child_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> launched ++;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> g_strfreev (real_argv);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> <span class='keyword'>if</span> (arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> arg_ptr = arg_ptr-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> <span class='comment'>/* rinse, repeat until we run out of arguments (That</span></td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> <span class='comment'>* is if we were adding singles anyway) */</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> } <span class='keyword'>while</span> (added_status == ADDED_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> arg_ptr != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> ! launch_only_one);</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_free (exec_locale);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"><span class='directive'>#ifdef HAVE_STARTUP_NOTIFICATION</span></td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> <span class='keyword'>if</span> ((sn_context != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)){</td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> sn_launcher_context_complete (sn_context); <span class='comment'>/* end sequence */</span></td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> add_startup_timeout (screen ? screen :</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> gdk_display_get_default_screen (gdk_display_get_default ()),</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> sn_launcher_context_unref (sn_context);</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> sn_display_unref (sn_display);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"><span class='directive'>#endif /* HAVE_STARTUP_NOTIFICATION */</span></td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> free_args (args);</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>if</span> (term_argv)</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> g_strfreev (term_argv);</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span class='keyword'>if</span> (free_me)</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> g_strfreev (free_me);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"><span class='comment'>/* strip any trailing &amp;, return FALSE if bad things happen and</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='comment'>we end up with an empty string */</span></td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">strip_the_amp (<span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> size_t exec_len;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> <span class='macro'>g_strstrip (exec)<span class='macro_popup'>g_strchomp (g_strchug (exec))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> exec_len = strlen (exec);</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='comment'>/* kill any trailing '&amp;' */</span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='keyword'>if</span> (exec[exec_len-1] == '&amp;') {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> exec[exec_len-1] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> g_strchomp (exec);</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='comment'>/* can't exactly launch an empty thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> (*exec == '\0')</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>char</span> *the_exec;</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> exec = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='comment'>/* This is a URL, so launch it as a url */</span></td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *url;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> url = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> <span class='comment'>/* Mate panel used to put this in Exec */</span></td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0'))</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> url = exec;</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> <span class='keyword'>if</span> (!(url &amp;&amp; url[0] != '\0')) {</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_URL,</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No URL to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No URL to launch"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> retval = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> url,</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> <span class='macro'>GDK_CURRENT_TIME<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='keyword'>return</span> retval ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='comment'>/* check the type, if there is one set */</span></td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type != MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NOT_LAUNCHABLE,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Not a launchable item"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Not a launchable item"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> exec[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_NO_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"No command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "No command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='comment'>/* make a new copy and get rid of spaces */</span></td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> the_exec = <span class='macro'>g_alloca (strlen (exec) + 1)<span class='macro_popup'>__builtin_alloca (strlen (exec) + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> g_strlcpy (the_exec, exec, strlen (exec) + 1);</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> ( ! strip_the_amp (the_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_BAD_EXEC_STRING,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Bad command (Exec) to launch"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Bad command (Exec) to launch"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> ret = ditem_execute (item, the_exec, file_list, screen, workspace, envp,</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_ONLY_ONE),</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_USE_CURRENT_DIR),</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_URIS),</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_APPEND_PATHS),</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> (flags &amp; MATE_DESKTOP_ITEM_LAUNCH_DO_NOT_REAP_CHILD),</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> error);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='comment'>* mate_desktop_item_launch:</span></td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='comment'>* This function runs the program listed in the specified 'item',</span></td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>* optionally appending additional arguments to its command line. It uses</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* #g_shell_parse_argv to parse the the exec string into a vector which is</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>* then passed to #g_spawn_async for execution. This can return all</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* the errors from MateURL, #g_shell_parse_argv and #g_spawn_async,</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* in addition to it's own. The files are</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* only added if the entry defines one of the standard % strings in it's</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>* Exec field.</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line">mate_desktop_item_launch (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> item, file_list, flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> <span class='comment'>* @envp: child's environment, or %NULL to inherit parent's</span></td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line">mate_desktop_item_launch_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, -1, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='comment'>* mate_desktop_item_launch_on_screen:</span></td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> <span class='comment'>* @file_list: Files/URIs to launch this item with, can be %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span class='comment'>* @screen: the %GdkScreen on which the application should be launched</span></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span class='comment'>* @workspace: the workspace on which the app should be launched (-1 for current)</span></td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='comment'>* See mate_desktop_item_launch for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='comment'>* additionally attempts to launch the application on a given screen</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span class='comment'>* and workspace.</span></td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='comment'>* Returns: The the pid of the process spawned. If more then one</span></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='comment'>* process was spawned the last pid is returned. On error -1</span></td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> <span class='comment'>* is returned and @error is set.</span></td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">mate_desktop_item_launch_on_screen (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> GList *file_list,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> <span class='keyword'>int</span> workspace,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_launch_on_screen_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> item, file_list, flags,</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> screen, workspace, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='comment'>* mate_desktop_item_drop_uri_list:</span></td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> <span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>* A list of files or urls dropped onto an icon, the proper (Url or File)</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> <span class='comment'>* exec is run you can pass directly string that you got as the</span></td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> <span class='comment'>* text/uri-list. This just parses the list and calls</span></td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> <span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> <span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line">mate_desktop_item_drop_uri_list (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_drop_uri_list_with_env (item, uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> flags, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"><span class='comment'>* mate_desktop_item_drop_uri_list_with_env:</span></td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"><span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"><span class='comment'>* @uri_list: text as gotten from a text/uri-list</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"><span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"><span class='comment'>* @envp: child's environment</span></td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"><span class='comment'>* @error: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"><span class='comment'>* See mate_desktop_item_drop_uri_list for a full description. This function</span></td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"><span class='comment'>* additionally passes an environment vector for the child process</span></td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"><span class='comment'>* which is to be launched.</span></td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"><span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"><span class='comment'>* Returns: The value returned by #mate_execute_async() upon execution of</span></td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"><span class='comment'>* the specified item or -1 on error. If multiple instances are run, the</span></td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"><span class='comment'>* return of the last one is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line">mate_desktop_item_drop_uri_list_with_env (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *uri_list,</td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> MateDesktopItemLaunchFlags flags,</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> <span class='keyword'>char</span> **envp,</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='keyword'>int</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='keyword'>char</span> **uris;</td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> uris = g_uri_list_extract_uris (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='keyword'>for</span> (uri = uris[0]; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; uri++) {</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> list = g_list_prepend (list, uri);</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> list = g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> ret = mate_desktop_item_launch_with_env (</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> item, list, flags, envp, error);</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> g_strfreev (uris);</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> g_list_free (list);</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line">exec_exists (<span class='keyword'>const</span> <span class='keyword'>char</span> *exec)</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> <span class='keyword'>if</span> (g_path_is_absolute (exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> <span class='keyword'>if</span> (access (exec, <span class='macro'>X_OK<span class='macro_popup'>1</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>char</span> *tryme;</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> tryme = g_find_program_in_path (exec);</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> <span class='keyword'>if</span> (tryme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> g_free (tryme);</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> <span class='comment'>* mate_desktop_item_exists:</span></td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='comment'>* Attempt to figure out if the program that can be executed by this item</span></td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> <span class='comment'>* actually exists. First it tries the TryExec attribute to see if that</span></td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='comment'>* contains a program that is in the path. Then if there is no such</span></td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> <span class='comment'>* attribute, it tries the first word of the Exec attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> <span class='comment'>* Returns: A boolean, %TRUE if it exists, %FALSE otherwise.</span></td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line">mate_desktop_item_exists (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *try_exec;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec;</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> try_exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TRY_EXEC<span class='macro_popup'>"TryExec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> <span class='keyword'>if</span> (try_exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> ! exec_exists (try_exec)) {</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (item-&gt;type == MATE_DESKTOP_ITEM_TYPE_APPLICATION) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exe;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>if</span> (exec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>if</span> ( ! g_shell_parse_argv (exec, &amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> <span class='keyword'>if</span> (argc &lt; 1) {</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> exe = argv[0];</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> <span class='keyword'>if</span> ( ! exec_exists (exe)) {</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> <span class='comment'>* mate_desktop_item_get_entry_type:</span></td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='comment'>* Gets the type attribute (the 'Type' field) of the item. This should</span></td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> <span class='comment'>* usually be 'Application' for an application, but it can be 'Directory'</span></td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='comment'>* for a directory description. There are other types available as well.</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> <span class='comment'>* The type usually indicates how the desktop item should be handeled and</span></td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='comment'>* how the 'Exec' field should be handeled.</span></td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='comment'>* Returns: The type of the specified 'item'. The returned</span></td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> <span class='comment'>* memory remains owned by the MateDesktopItem and should not be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line">MateDesktopItemType</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line">mate_desktop_item_get_entry_type (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, 0)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>return</span> item-&gt;type;</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line">mate_desktop_item_set_entry_type (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> MateDesktopItemType type)</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> item-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> <span class='keyword'>switch</span> (type) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_NULL:</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_APPLICATION:</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Application"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_LINK:</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_FSDEVICE:</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"FSDevice"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_MIME_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"MimeType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_DIRECTORY:</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Directory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE:</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Service"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>case</span> MATE_DESKTOP_ITEM_TYPE_SERVICE_TYPE:</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"ServiceType"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> <span class='comment'>* mate_desktop_item_get_file_status:</span></td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='comment'>* This function checks the modification time of the on-disk file to</span></td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> <span class='comment'>* see if it is more recent than the in-memory data.</span></td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> <span class='comment'>* Returns: An enum value that specifies whether the item has changed since being loaded.</span></td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line">MateDesktopItemStatus</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line">mate_desktop_item_get_file_status (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> MateDesktopItemStatus retval;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, MATE_DESKTOP_ITEM_DISAPPEARED)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (MATE_DESKTOP_ITEM_DISAPPEARED); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>return</span> MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> retval = MATE_DESKTOP_ITEM_UNCHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_has_attribute (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> retval = MATE_DESKTOP_ITEM_DISAPPEARED;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (((guint64) item-&gt;mtime) &lt; g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> retval = MATE_DESKTOP_ITEM_CHANGED;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='comment'>* mate_desktop_item_find_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> <span class='comment'>* @icon: icon name, something you'd get out of the Icon key</span></td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>* @desired_size: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> <span class='comment'>* @flags: FIXME</span></td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> <span class='comment'>* is not an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line">mate_desktop_item_find_icon (GtkIconTheme *icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon,</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='keyword'>int</span> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> <span class='keyword'>int</span> flags)</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> GtkIconInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='keyword'>char</span> *full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='macro'>g_return_val_if_fail (icon_theme == NULL ||<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='macro'>GTK_IS_ICON_THEME (icon_theme), NULL)<span class='macro_popup'>do { if ((icon_theme == ((void*)0) || (((__extension__ ({ GTypeInstance<br> *__inst = (GTypeInstance*) ((icon_theme)); GType __t = ((gtk_icon_theme_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; })))))) { } else { g_return_if_fail_warning ("MateDesktop"<br>, ((const char*) (__func__)), "icon_theme == NULL || GTK_IS_ICON_THEME (icon_theme)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || strcmp(icon,<span class='string_literal'>""</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_path_is_absolute (icon)) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> <span class='keyword'>if</span> (g_file_test (icon, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> <span class='keyword'>char</span> *icon_no_extension;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> <span class='keyword'>if</span> (icon_theme == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> icon_theme = gtk_icon_theme_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> icon_no_extension = <span class='macro'>g_strdup (icon)<span class='macro_popup'>g_strdup_inline (icon)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> p = strrchr (icon_no_extension, '.');</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> <span class='keyword'>if</span> (p &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> (strcmp (p, <span class='string_literal'>".png"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> strcmp (p, <span class='string_literal'>".xpm"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> strcmp (p, <span class='string_literal'>".svg"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> *p = 0;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> info = gtk_icon_theme_lookup_icon (icon_theme,</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> icon_no_extension,</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> desired_size,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> full = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> full = <span class='macro'>g_strdup (gtk_icon_info_get_filename (info))<span class='macro_popup'>g_strdup_inline (gtk_icon_info_get_filename (info))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> g_free (icon_no_extension);</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='keyword'>return</span> full;</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> <span class='comment'>* mate_desktop_item_get_icon:</span></td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='comment'>* @icon_theme: a #GtkIconTheme</span></td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> <span class='comment'>* Description: This function goes and looks for the icon file. If the icon</span></td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> <span class='comment'>* is not set as an absolute filename, this will look for it in the standard places.</span></td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='comment'>* If it can't find the icon, it will return %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='comment'>* Returns: A newly allocated string</span></td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line">mate_desktop_item_get_icon (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> GtkIconTheme *icon_theme)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='comment'>/* maybe this function should be deprecated in favour of find icon</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> <span class='comment'>* -George */</span></td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *icon;</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> icon = mate_desktop_item_get_string (item, <span class='macro'>MATE_DESKTOP_ITEM_ICON<span class='macro_popup'>"Icon"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_find_icon (icon_theme, icon,</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> 48 <span class='comment'>/* desired_size */</span>,</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> 0 <span class='comment'>/* flags */</span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> <span class='comment'>* mate_desktop_item_get_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='comment'>* Returns: The file location associated with 'item'.</span></td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">mate_desktop_item_get_location (<span class='keyword'>const</span> MateDesktopItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>return</span> item-&gt;location;</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location:</span></td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='comment'>* @location: A uri string specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item.</span></td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line">mate_desktop_item_set_location (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *location)</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> strcmp (item-&gt;location, location) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> g_free (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> item-&gt;location = <span class='macro'>g_strdup (location)<span class='macro_popup'>g_strdup_inline (location)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='comment'>/* This is ugly, but useful internally */</span></td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>if</span> (item-&gt;mtime != <span class='macro'>DONT_UPDATE_MTIME<span class='macro_popup'>((gint64)-2)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> item-&gt;mtime = 0;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> <span class='keyword'>if</span> (item-&gt;location) {</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> file = g_file_new_for_uri (item-&gt;location);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>if</span> (g_file_info_has_attribute (info,</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> item-&gt;mtime = g_file_info_get_attribute_uint64 (info, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='comment'>/* Make sure that save actually saves */</span></td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> <span class='comment'>* mate_desktop_item_set_location_file:</span></td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='comment'>* @file: A local filename specifying the file location of this particular item.</span></td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='comment'>* Set's the 'location' uri of this item to the given @file.</span></td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line">mate_desktop_item_set_location_file (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *file)</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> GFile *gfile;</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> gfile = g_file_new_for_path (file);</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> mate_desktop_item_set_location_gfile (item, gfile);</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> g_object_unref (gfile);</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line">mate_desktop_item_set_location_gfile (MateDesktopItem *item, GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mate_desktop_item_set_location (item, uri);</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> mate_desktop_item_set_location (item, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> <span class='comment'>* Reading/Writing different sections, NULL is the standard section</span></td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line">mate_desktop_item_attr_exists (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> <span class='comment'>* String type</span></td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line">mate_desktop_item_get_string (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> <span class='keyword'>return</span> lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line">mate_desktop_item_set_string (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> set (item, attr, value);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> item-&gt;type = type_from_string (value);</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='comment'>* LocaleString type</span></td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>return</span> lookup_best_locale(item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span>* mate_desktop_item_get_localestring_lang(<span class='keyword'>const</span> MateDesktopItem* item, <span class='keyword'>const</span> <span class='keyword'>char</span>* attr, <span class='keyword'>const</span> <span class='keyword'>char</span>* language)</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_val_if_fail(item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='macro'>g_return_val_if_fail(item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='macro'>g_return_val_if_fail(attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>return</span> lookup_locale(item, attr, language);</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='comment'>* mate_desktop_item_get_string_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='comment'>* @item: A desktop item</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> <span class='comment'>* @attr: An attribute name</span></td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='comment'>* Returns the current locale that is used for the given attribute.</span></td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> <span class='comment'>* This might not be the same for all attributes. For example, if your</span></td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='comment'>* locale is "en_US.ISO8859-1" but attribute FOO only has "en_US" then</span></td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> <span class='comment'>* that would be returned for attr = "FOO". If attribute BAR has</span></td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='comment'>* "en_US.ISO8859-1" then that would be returned for "BAR".</span></td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> <span class='comment'>* Returns: a string equal to the current locale or NULL</span></td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> <span class='comment'>* if the attribute is invalid or there is no matching locale.</span></td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">mate_desktop_item_get_attr_locale (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> value = lookup_locale (item, attr, langs_pointer[i]);</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">mate_desktop_item_get_languages (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> GList *list = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;languages; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>char</span> *language = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>if</span> (attr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> lookup_locale (item, attr, language) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> list = g_list_prepend (list, language);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (list);</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line">get_language (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *langs_pointer;</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> langs_pointer = g_get_language_names ();</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>for</span> (i = 0; langs_pointer[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> <span class='comment'>/* find first without encoding */</span></td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> <span class='keyword'>if</span> (strchr (langs_pointer[i], '.') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>return</span> langs_pointer[i];</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">mate_desktop_item_set_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> set_locale (item, attr, get_language (), value);</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line">mate_desktop_item_set_localestring_lang (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> set_locale (item, attr, language, value);</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line">mate_desktop_item_clear_localestring (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> <span class='keyword'>for</span> (l = item-&gt;languages; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> set_locale (item, attr, l-&gt;data, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> set (item, attr, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='comment'>* Strings, Regexps types</span></td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line">mate_desktop_item_get_strings (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, NULL)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> <span class='keyword'>return</span> g_strsplit (value, <span class='string_literal'>";"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">mate_desktop_item_set_strings (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> <span class='keyword'>char</span> **strings)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='keyword'>char</span> *str, *str2;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> str = g_strjoinv (<span class='string_literal'>";"</span>, strings);</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> str2 = g_strconcat (str, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> <span class='comment'>/* FIXME: there's no way to escape semicolons apparently */</span></td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> set (item, attr, str2);</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> g_free (str2);</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='comment'>* Boolean type</span></td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line">mate_desktop_item_get_boolean (<span class='keyword'>const</span> MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr)</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='macro'>g_return_val_if_fail (item != NULL, FALSE)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_val_if_fail (item-&gt;refcount &gt; 0, FALSE)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> <span class='macro'>g_return_val_if_fail (attr != NULL, FALSE)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> value = lookup (item, attr);</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> <span class='keyword'>return</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> atoi (value) != 0);</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line">mate_desktop_item_set_boolean (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *attr,</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean value)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> <span class='macro'>g_return_if_fail (attr != NULL)<span class='macro_popup'>do { if ((attr != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "attr != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> set (item, attr, value ? <span class='string_literal'>"true"</span> : <span class='string_literal'>"false"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line">mate_desktop_item_set_launch_time (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> guint32 timestamp)</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> item-&gt;launch_time = timestamp;</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> <span class='comment'>* Clearing attributes</span></td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line">mate_desktop_item_clear_section (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *section)</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> Section *sec;</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> <span class='macro'>g_return_if_fail (item != NULL)<span class='macro_popup'>do { if ((item != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='macro'>g_return_if_fail (item-&gt;refcount &gt; 0)<span class='macro_popup'>do { if ((item-&gt;refcount &gt; 0)) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "item-&gt;refcount &gt; 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> sec = find_section (item, section);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> <span class='keyword'>if</span> (sec == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> g_free (li-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> g_list_free (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> item-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (li = sec-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> sec-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_hash_table_remove (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> li-&gt;data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_list_free (sec-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> sec-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> item-&gt;modified = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"><span class='comment'>/************************************************************</span></td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='comment'>* Parser: *</span></td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='comment'>************************************************************/</span></td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">standard_is_boolean (<span class='keyword'>const</span> <span class='keyword'>char</span> * key)</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> <span class='keyword'>static</span> GHashTable *bools = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='keyword'>if</span> (bools == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> bools = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_NO_DISPLAY<span class='macro_popup'>"NoDisplay"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_HIDDEN<span class='macro_popup'>"Hidden"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TERMINAL<span class='macro_popup'>"Terminal"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> g_hash_table_insert (bools,</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_READ_ONLY<span class='macro_popup'>"ReadOnly"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (bools, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"><span class='keyword'>static</span> gboolean <span class='macro'>G_GNUC_CONST<span class='macro_popup'>__attribute__ ((__const__))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line">standard_is_strings (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>static</span> GHashTable *strings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>if</span> (strings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> strings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_FILE_PATTERN<span class='macro_popup'>"FilePattern"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ACTIONS<span class='macro_popup'>"Actions"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_MIME_TYPE<span class='macro_popup'>"MimeType"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_PATTERNS<span class='macro_popup'>"Patterns"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> g_hash_table_insert (strings,</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (strings, key) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='comment'>/* If no need to cannonize, returns NULL */</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line">cannonize (<span class='keyword'>const</span> <span class='keyword'>char</span> *key, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='keyword'>if</span> (standard_is_boolean (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> <span class='keyword'>if</span> (value[0] == 'T' ||</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> value[0] == 't' ||</td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> value[0] == 'Y' ||</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> value[0] == 'y' ||</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> atoi (value) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"true"</span>)<span class='macro_popup'>g_strdup_inline ("true")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"false"</span>)<span class='macro_popup'>g_strdup_inline ("false")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (standard_is_strings (key)) {</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> <span class='keyword'>int</span> len = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>if</span> (len == 0 || value[len-1] != ';') {</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> <span class='keyword'>return</span> g_strconcat (value, <span class='string_literal'>";"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='comment'>/* XXX: Perhaps we should canonize numeric values as well, but this</span></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span class='comment'>* has caused some subtle problems before so it needs to be done</span></td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='comment'>* carefully if at all */</span></td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">decode_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='keyword'>char</span> *p = g_malloc (strlen (s) + 1);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> <span class='keyword'>char</span> *q = p;</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='keyword'>if</span> (*s == '\\'){</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> <span class='keyword'>switch</span> (*(++s)){</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='keyword'>case</span> 's':</td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> *p++ = ' ';</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> <span class='keyword'>case</span> 't':</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> *p++ = '\t';</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> <span class='keyword'>case</span> 'n':</td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> *p++ = '\n';</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> <span class='keyword'>case</span> 'r':</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> *p++ = '\r';</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> *p++ = *s;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> } <span class='keyword'>while</span> (*s++);</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span id="start25"><span class='keyword'>static</span></span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">escape_string_and_dup (<span class='keyword'>const</span> <span class='keyword'>char</span> *s)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> <span class='keyword'>char</span> *<span id="start24"><span id="end25">return_value</span></span>, *p;</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *q;</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>int</span> len = 0;</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span id="start23"><span id="end24"><span class='keyword'>if</span></span></span> (<span id="start22"><span id="end23"><span class='variable'>s<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>11.1</div></td><td>'s' is not equal to NULL</td></tr></tbody></table></span></span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup(<span class='string_literal'>""</span>)<span class='macro_popup'>g_strdup_inline ("")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> <span id="start19"><span id="end20"><span id="start21"><span id="end22">q</span></span></span></span> = <span id="start20"><span id="end21">s</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span id="start12"><span id="end13"><span id="start18"><span id="end19"><span class='keyword'>while</span></span></span></span></span> (*q){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 3116</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> <span id="start17"><span id="end18">len</span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span id="start16"><span id="end17"><span class='keyword'>if</span></span></span> (<span id="start15"><span class="mrange"><span id="end16">strchr</span></span> (<span class='string_literal'>"\n\r\t\\"</span>, *q) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> len++;</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span id="start14"><span id="end15">q</span></span>++;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> <span id="start13"><span id="end14">}</td></tr></span></span>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span id="start9"><span id="end10"><span id="start11"><span id="end12">return_value</span></span></span></span> = p = (<span class='keyword'>char</span> *) g_malloc (<span id="start10"><span id="end11">len</span></span> + 1);</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span id="start3"><span class='keyword'>do</span></span> {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Loop condition is true. Execution continues on line 3118</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> <span id="start8"><span id="end9"><span class='keyword'>switch</span></span></span> (<span id="start7"><span id="end8">*</span></span>s){</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Control jumps to 'case 92:' at line 3131</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Control jumps to the 'default' case at line 3135</td><td><div class="PathNav"><a href="#EndPath" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='keyword'>case</span> '\t':</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> *p++ = 't';</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> <span class='keyword'>case</span> '\n':</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> *p++ = 'n';</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>case</span> '\r':</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> *p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> *p++ = 'r';</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> <span class='keyword'>case</span> '\\':</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> <span id="start6"><span id="end7">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> <span id="start5"><span id="end6">*</span></span>p++ = '\\';</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span id="start4"><span id="end5"><span class='keyword'>break</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td> Execution continues on line 3138</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> <span class="mrange"><span id="start0"><span id="end1"><span id="start2"><span id="end3">*</span></span></span></span>p++ <span id="end0">=</span> *<span id="start1"><span id="end2">s</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:30ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> } <span class='keyword'>while</span> (<span id="end4">*</span>s++);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> <span class='keyword'>return</span> return_value;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line">check_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> GIConv cd = g_iconv_open (<span class='string_literal'>"UTF-8"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> ((GIConv)-1 == cd)</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> g_iconv_close (cd);</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line">insert_locales (GHashTable *encodings, <span class='keyword'>char</span> *enc, ...)</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='macro'>va_start (args, enc)<span class='macro_popup'>__builtin_va_start(args, enc)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>for</span> (;;) {</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> g_hash_table_insert (encodings, s, enc);</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"><span class='comment'>/* make a standard conversion table from the desktop standard spec */</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">init_encodings (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GHashTable *encodings = g_hash_table_new (g_str_hash, g_str_equal);</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> <span class='comment'>/* "C" is plain ascii */</span></td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ASCII"</span>, <span class='string_literal'>"C"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ARMSCII-8"</span>, <span class='string_literal'>"by"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"BIG5"</span>, <span class='string_literal'>"zh_TW"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"CP1251"</span>, <span class='string_literal'>"be"</span>, <span class='string_literal'>"bg"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"EUC-CN"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-CN"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GB2312"</span>, <span class='string_literal'>"zh_CN"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-JP"</span>, <span class='string_literal'>"ja"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"EUC-KR"</span>, <span class='string_literal'>"ko"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "GEORGIAN-ACADEMY", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"GEORGIAN-PS"</span>, <span class='string_literal'>"ka"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-1"</span>, <span class='string_literal'>"br"</span>, <span class='string_literal'>"ca"</span>, <span class='string_literal'>"da"</span>, <span class='string_literal'>"de"</span>, <span class='string_literal'>"en"</span>, <span class='string_literal'>"es"</span>, <span class='string_literal'>"eu"</span>, <span class='string_literal'>"fi"</span>, <span class='string_literal'>"fr"</span>, <span class='string_literal'>"gl"</span>, <span class='string_literal'>"it"</span>, <span class='string_literal'>"nl"</span>, <span class='string_literal'>"wa"</span>, <span class='string_literal'>"no"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"pt"</span>, <span class='string_literal'>"sv"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-2"</span>, <span class='string_literal'>"cs"</span>, <span class='string_literal'>"hr"</span>, <span class='string_literal'>"hu"</span>, <span class='string_literal'>"pl"</span>, <span class='string_literal'>"ro"</span>, <span class='string_literal'>"sk"</span>, <span class='string_literal'>"sl"</span>, <span class='string_literal'>"sq"</span>, <span class='string_literal'>"sr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-3"</span>, <span class='string_literal'>"eo"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-5"</span>, <span class='string_literal'>"mk"</span>, <span class='string_literal'>"sp"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-7"</span>, <span class='string_literal'>"el"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-9"</span>, <span class='string_literal'>"tr"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-13"</span>, <span class='string_literal'>"lt"</span>, <span class='string_literal'>"lv"</span>, <span class='string_literal'>"mi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-14"</span>, <span class='string_literal'>"ga"</span>, <span class='string_literal'>"cy"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"ISO-8859-15"</span>, <span class='string_literal'>"et"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-R"</span>, <span class='string_literal'>"ru"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"KOI8-U"</span>, <span class='string_literal'>"uk"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='keyword'>if</span> (check_locale (<span class='string_literal'>"TCVN-5712"</span>)) {</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN-5712"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TCVN"</span>, <span class='string_literal'>"vi"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> insert_locales (encodings, <span class='string_literal'>"TIS-620"</span>, <span class='string_literal'>"th"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='comment'>/*insert_locales (encodings, "VISCII", NULL);*/</span></td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>return</span> encodings;</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line">get_encoding_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span class='keyword'>char</span> lang[3];</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *encoding;</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span class='keyword'>static</span> GHashTable *encodings = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='comment'>/* if locale includes encoding, use it */</span></td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> encoding = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> encoding+1;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='keyword'>if</span> (encodings == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> encodings = init_encodings ();</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='comment'>/* first try the entire locale (at this point ll_CC) */</span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> encoding = g_hash_table_lookup (encodings, locale);</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='keyword'>if</span> (encoding != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>return</span> encoding;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='comment'>/* Try just the language */</span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> strncpy (lang, locale, 2);</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> lang[2] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='keyword'>return</span> g_hash_table_lookup (encodings, lang);</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"><span class='keyword'>static</span> Encoding</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">get_encoding (ReadBuf *rb)</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='keyword'>char</span> buf [<span class='macro'>BUFSIZ<span class='macro_popup'>8192</span></span>];</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> gboolean all_valid_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>while</span> (readbuf_gets (buf, <span class='keyword'>sizeof</span> (buf), rb) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='keyword'>if</span> (strncmp (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> buf,</td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='keyword'>char</span> *p = &amp;buf[strlen (<span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>)];</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='keyword'>if</span> (*p != '=')</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='keyword'>if</span> (*p == ' ')</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> p++;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"UTF-8"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (p, <span class='string_literal'>"Legacy-Mixed"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='comment'>/* According to the spec we're not supposed</span></td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='comment'>* to read a file like this */</span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='keyword'>return</span> ENCODING_UNKNOWN;</td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (<span class='string_literal'>"[KDE Desktop Entry]"</span>, buf) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='comment'>/* don't break yet, we still want to support</span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='comment'>* Encoding even here */</span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8 &amp;&amp; ! g_utf8_validate (buf, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> all_valid_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='keyword'>if</span> (old_kde)</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> <span class='comment'>/* try to guess by location */</span></td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> <span class='keyword'>if</span> (rb-&gt;uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strstr (rb-&gt;uri, <span class='string_literal'>"mate/apps/"</span>) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> <span class='comment'>/* old mate */</span></td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> <span class='comment'>/* A dilemma, new KDE files are in UTF-8 but have no Encoding</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> <span class='comment'>* info, at this time we really can't tell. The best thing to</span></td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='comment'>* do right now is to just assume UTF-8 if the whole file</span></td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> <span class='comment'>* validates as utf8 I suppose */</span></td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> <span class='keyword'>if</span> (all_valid_utf8)</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> <span class='keyword'>return</span> ENCODING_UTF8;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> <span class='keyword'>return</span> ENCODING_LEGACY_MIXED;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line">decode_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *value, Encoding encoding, <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> <span class='keyword'>char</span> *retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* if legacy mixed, then convert */</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_LEGACY_MIXED) {</td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *char_encoding = get_encoding_from_locale (locale);</td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>char</span> *utf8_string;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='keyword'>if</span> (char_encoding == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='keyword'>if</span> (strcmp (char_encoding, <span class='string_literal'>"ASCII"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> utf8_string = g_convert (value, -1, <span class='string_literal'>"UTF-8"</span>, char_encoding,</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='keyword'>if</span> (utf8_string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> retval = decode_string_and_dup (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> g_free (utf8_string);</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='comment'>/* if utf8, then validate */</span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; encoding == ENCODING_UTF8) {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='keyword'>if</span> ( ! g_utf8_validate (value, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='comment'>/* invalid utf8, ignore this key */</span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='comment'>/* Meaning this is not a localized string */</span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='keyword'>return</span> decode_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">snarf_locale_from_key (<span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *brace;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='keyword'>char</span> *locale, *p;</td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> brace = strchr (key, '[');</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='keyword'>if</span> (brace == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> locale = <span class='macro'>g_strdup (brace + 1)<span class='macro_popup'>g_strdup_inline (brace + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (*locale == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> p = strchr (locale, ']');</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> <span class='keyword'>if</span> (p == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> <span class='keyword'>return</span> locale;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line">insert_key (MateDesktopItem *item,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> Section *cur_section,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> Encoding encoding,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key,</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value,</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> gboolean old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> gboolean no_translations)</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> <span class='keyword'>char</span> *k;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> <span class='keyword'>char</span> *val;</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"> <span class='comment'>/* we always store everything in UTF-8 */</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> val = <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> <span class='keyword'>char</span> *locale = snarf_locale_from_key (key);</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> <span class='comment'>/* If we're ignoring translations */</span></td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> <span class='keyword'>if</span> (no_translations &amp;&amp; locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> val = decode_string (value, encoding, locale);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* Ignore this key, it's whacked */</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='keyword'>if</span> (val == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> g_strchomp (val);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='comment'>/* For old KDE entries, we can also split by a comma</span></td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='comment'>* on sort order, so convert to semicolons */</span></td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> <span class='keyword'>if</span> (old_kde &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> strcmp (key, <span class='macro'>MATE_DESKTOP_ITEM_SORT_ORDER<span class='macro_popup'>"SortOrder"</span></span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> strchr (val, ';') == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> <span class='keyword'>for</span> (i = 0; val[i] != '\0'; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> <span class='keyword'>if</span> (val[i] == ',')</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> val[i] = ';';</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> <span class='comment'>/* Check some types, not perfect, but catches a lot</span></td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> <span class='comment'>* of things */</span></td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> <span class='keyword'>char</span> *cannon = cannonize (key, val);</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> <span class='keyword'>if</span> (cannon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> val = cannon;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> k = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> <span class='comment'>/* Take care of the language part */</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> strcmp (locale, <span class='string_literal'>"C"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>char</span> *p;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> <span class='comment'>/* Whack C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> p = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> <span class='keyword'>char</span> *p, *brace;</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> <span class='comment'>/* Whack the encoding part */</span></td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> p = strchr (locale, '.');</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> *p = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='keyword'>if</span> (g_list_find_custom (item-&gt;languages, locale,</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> (GCompareFunc)strcmp) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> item-&gt;languages = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> (item-&gt;languages, locale);</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> <span class='comment'>/* Whack encoding from encoding in the key */</span></td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> brace = strchr (k, '[');</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> p = strchr (brace, '.');</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> <span class='keyword'>if</span> (p != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> *p = ']';</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line"> *(p+1) = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='keyword'>if</span> (cur_section == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, k) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> item-&gt;keys = g_list_prepend (item-&gt;keys,</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> <span class='macro'>g_strdup (k)<span class='macro_popup'>g_strdup_inline (k)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> g_hash_table_replace (item-&gt;main_hash, k, val);</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> (<span class='string_literal'>"%s/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> cur_section-&gt;name, k);</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='comment'>/* only add to list if we haven't seen it before */</span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (item-&gt;main_hash, full) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> cur_section-&gt;keys =</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> g_list_prepend (cur_section-&gt;keys, k);</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* later duplicates override earlier ones */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> full, val);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line">setup_type (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type = g_hash_table_lookup (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> <span class='keyword'>char</span> *base = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> <span class='keyword'>if</span> (base != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> strcmp (base, <span class='string_literal'>".directory"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> <span class='comment'>/* This gotta be a directory */</span></td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"Directory"</span>)<span class='macro_popup'>g_strdup_inline ("Directory")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_TYPE)<span class='macro_popup'>g_strdup_inline ("Type")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> item-&gt;type = MATE_DESKTOP_ITEM_TYPE_NULL;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> item-&gt;type = type_from_string (type);</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"><span class='comment'>/* fallback to find something suitable for C locale */</span></td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line">try_english_key (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *key)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>char</span> *locales[] = { <span class='string_literal'>"en_US"</span>, <span class='string_literal'>"en_GB"</span>, <span class='string_literal'>"en_AU"</span>, <span class='string_literal'>"en"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> str = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> <span class='keyword'>for</span> (i = 0; locales[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; str == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> str = <span class='macro'>g_strdup (lookup_locale (item, key, locales[i]))<span class='macro_popup'>g_strdup_inline (lookup_locale (item, key, locales[i]))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> <span class='comment'>/* We need a 7-bit ascii string, so whack all</span></td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='comment'>* above 127 chars */</span></td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> guchar *p;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='keyword'>for</span> (p = (guchar *)str; *p != '\0'; p++) {</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>if</span> (*p &gt; 127)</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> *p = '?';</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> <span class='keyword'>return</span> str;</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line">sanitize (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *type;</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> type = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> <span class='comment'>/* understand old mate style url exec thingies */</span></td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (type, <span class='string_literal'>"URL"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *exec = lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_TYPE<span class='macro_popup'>"Type"</span></span>, <span class='string_literal'>"Link"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='keyword'>if</span> (exec != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> <span class='comment'>/* Note, this must be in this order */</span></td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_URL<span class='macro_popup'>"URL"</span></span>, exec);</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> set (item, <span class='macro'>MATE_DESKTOP_ITEM_EXEC<span class='macro_popup'>"Exec"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='comment'>/* we make sure we have Name, Encoding and Version */</span></td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>char</span> *name = try_english_key (item, <span class='macro'>MATE_DESKTOP_ITEM_NAME<span class='macro_popup'>"Name"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> <span class='comment'>/* If no name, use the basename */</span></td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; uri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> name = g_path_get_basename (uri);</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> <span class='comment'>/* If no uri either, use same default as mate_desktop_item_new */</span></td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"> <span class='comment'>/* Translators: the "name" mentioned here is the name of</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> <span class='comment'>* an application or a document */</span></td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"No name"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("mate-desktop", "No name"<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_NAME)<span class='macro_popup'>g_strdup_inline ("Name")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_ENCODING<span class='macro_popup'>"Encoding"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> <span class='comment'>/* We store everything in UTF-8 so write that down */</span></td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_ENCODING)<span class='macro_popup'>g_strdup_inline ("Encoding")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> <span class='keyword'>if</span> (lookup (item, <span class='macro'>MATE_DESKTOP_ITEM_VERSION<span class='macro_popup'>"Version"</span></span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line"> <span class='comment'>/* this is the version that we follow, so write it down */</span></td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> g_hash_table_replace (item-&gt;main_hash,</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> <span class='macro'>g_strdup (<span class='string_literal'>"1.0"</span>)<span class='macro_popup'>g_strdup_inline ("1.0")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> item-&gt;keys = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> (item-&gt;keys, <span class='macro'>g_strdup (MATE_DESKTOP_ITEM_VERSION)<span class='macro_popup'>g_strdup_inline ("Version")</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> FirstBrace,</td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> OnSecHeader,</td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> IgnoreToEOL,</td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> IgnoreToEOLFirst,</td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> KeyDef,</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> KeyDefOnKey,</td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> KeyValue</td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"><span class='keyword'>static</span> MateDesktopItem *</td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line">ditem_load (ReadBuf *rb,</td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line"> gboolean no_translations,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> <span class='keyword'>int</span> state;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> <span class='keyword'>char</span> CharBuffer [1024];</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> <span class='keyword'>char</span> *next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> <span class='keyword'>int</span> c;</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> Encoding encoding;</td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> MateDesktopItem *item;</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> Section *cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> <span class='keyword'>char</span> *key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> gboolean old_kde = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> encoding = get_encoding (rb);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> <span class='keyword'>if</span> (encoding == ENCODING_UNKNOWN) {</td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='macro'>MATE_DESKTOP_ITEM_ERROR<span class='macro_popup'>mate_desktop_item_error_quark ()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> MATE_DESKTOP_ITEM_ERROR_UNKNOWN_ENCODING,</td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Unknown encoding of: %s"</span>)<span class='macro_popup'>((char *) g_dgettext ("mate-desktop", "Unknown encoding of: %s"<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"> <span class='comment'>/* Rewind since get_encoding goes through the file */</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line"> <span class='keyword'>if</span> (! readbuf_rewind (rb, error)) {</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line"> <span class='comment'>/* spec says, don't read this file */</span></td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> item = mate_desktop_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> item-&gt;modified = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> <span class='comment'>/* Note: location and mtime are filled in by the new_from_file</span></td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='comment'>* function since it has those values */</span></td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"><span class='directive'>#define OVERFLOW (next == &amp;CharBuffer [sizeof(CharBuffer)-1])</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> <span class='keyword'>while</span> ((c = readbuf_getc (rb)) != <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> <span class='keyword'>if</span> (c == '\r') <span class='comment'>/* Ignore Carriage Return */</span></td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> <span class='keyword'>switch</span> (state) {</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> <span class='keyword'>case</span> OnSecHeader:</td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> <span class='keyword'>if</span> (c == ']' || OVERFLOW) {</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> cur_section-&gt;keys = g_list_reverse</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='string_literal'>"KDE Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> old_kde = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (CharBuffer,</td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line"> <span class='string_literal'>"Desktop Entry"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line"> <span class='comment'>/* Main section */</span></td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> cur_section = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> cur_section = <span class='macro'>g_new0 (Section, 1)<span class='macro_popup'>((Section *) g_malloc0_n ((1), sizeof (Section)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> cur_section-&gt;name =</td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> cur_section-&gt;keys = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> item-&gt;sections = g_list_prepend</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> (item-&gt;sections, cur_section);</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (c == '[') {</td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='comment'>/* FIXME: probably error out instead of ignoring this */</span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOL:</td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='keyword'>case</span> IgnoreToEOLFirst:</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> <span class='keyword'>if</span> (c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> <span class='keyword'>if</span> (state == IgnoreToEOLFirst)</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> state = FirstBrace;</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line"> <span class='keyword'>case</span> FirstBrace:</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> <span class='keyword'>case</span> KeyDef:</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line"> <span class='keyword'>case</span> KeyDefOnKey:</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> <span class='keyword'>if</span> (c == '#') {</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> state = IgnoreToEOLFirst;</td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> state = IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> <span class='keyword'>if</span> (c == '[' &amp;&amp; state != KeyDefOnKey){</td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> state = OnSecHeader;</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* On first pass, don't allow dangling keys */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (state == FirstBrace)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> <span class='keyword'>if</span> ((c == ' ' &amp;&amp; state != KeyDefOnKey) || c == '\t')</td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> <span class='keyword'>if</span> (c == '\n' || OVERFLOW) { <span class='comment'>/* Abort Definition */</span></td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line"> state = KeyDef;</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> <span class='keyword'>if</span> (c == '=' || OVERFLOW){</td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> key = <span class='macro'>g_strdup (CharBuffer)<span class='macro_popup'>g_strdup_inline (CharBuffer)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> state = KeyValue;</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"> state = KeyDefOnKey;</td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line"> <span class='keyword'>case</span> KeyValue:</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='keyword'>if</span> (OVERFLOW || c == '\n'){</td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> state = (c == '\n') ? KeyDef : IgnoreToEOL;</td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> next = CharBuffer;</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> *next++ = c;</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"> } <span class='comment'>/* switch */</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line"> } <span class='comment'>/* while ((c = getc_unlocked (f)) != EOF) */</span></td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> <span class='keyword'>if</span> (c == <span class='macro'>EOF<span class='macro_popup'>(-1)</span></span> &amp;&amp; state == KeyValue) {</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> *next = '\0';</td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> insert_key (item, cur_section, encoding,</td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> key, CharBuffer, old_kde,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> no_translations);</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> g_free (key);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> key = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"><span class='directive'>#undef OVERFLOW</span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='keyword'>if</span> (cur_section != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> cur_section-&gt;keys != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> cur_section-&gt;keys = g_list_reverse (cur_section-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> <span class='comment'>/* keys were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"> item-&gt;keys = g_list_reverse (item-&gt;keys);</td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line"> <span class='comment'>/* sections were inserted in reverse */</span></td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line"> item-&gt;sections = g_list_reverse (item-&gt;sections);</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> <span class='comment'>/* sanitize some things */</span></td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> sanitize (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> <span class='comment'>/* make sure that we set up the type */</span></td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> setup_type (item, rb-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> readbuf_close (rb);</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> stream_printf (GFileOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line">stream_printf (GFileOutputStream *stream, <span class='keyword'>const</span> <span class='keyword'>char</span> *format, ...)</td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> gchar *s;</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> <span class='macro'>va_start (args, format)<span class='macro_popup'>__builtin_va_start(args, format)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> s = g_strdup_vprintf (format, args);</td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> <span class='comment'>/* FIXME: what about errors */</span></td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> g_output_stream_write (<span class='macro'>G_OUTPUT_STREAM (stream)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((stream)), ((g_output_stream_get_type ()))))))</span></span>, s, strlen (s),</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> g_free (s);</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line">dump_section (MateDesktopItem *item, GFileOutputStream *stream, Section *section)</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> GList *li;</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> stream_printf (stream, <span class='string_literal'>"[%s]\n"</span>, section-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> <span class='keyword'>for</span> (li = section-&gt;keys; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *key = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> <span class='keyword'>char</span> *full = g_strdup_printf (<span class='string_literal'>"%s/%s"</span>, section-&gt;name, key);</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, full);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> <span class='keyword'>if</span> (value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> <span class='keyword'>char</span> *val = escape_string_and_dup (value);</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> g_free (full);</td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"><span id="start41"><span class='keyword'>static</span></span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line">ditem_save (MateDesktopItem *item, <span class='keyword'>const</span> <span class='keyword'>char</span> *uri, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> <span id="start40"><span id="end41">GList</span></span> *li;</td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line"> stream = g_file_replace (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, G_FILE_CREATE_NONE,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> <span id="start39"><span id="end40"><span class='keyword'>if</span></span></span> (<span id="start38"><span class="mrange"><span id="end39">stream</span></span> == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'stream' is not equal to NULL</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line"> <span id="start35"><span id="end36"><span id="start37"><span id="end38">stream_printf</span></span></span></span> (<span id="start36"><span id="end37">stream</span></span>, <span class='string_literal'>"[Desktop Entry]\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> <span id="start34"><span id="end35"><span class='keyword'>for</span></span></span> (li = item-&gt;keys; <span id="start33"><span class="mrange"><span id="end34">li</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>; li = li-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:31ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Assuming 'li' is not equal to NULL</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"> <span id="start30"><span id="end31"><span id="start32"><span id="end33"><span class='keyword'>const</span></span></span></span></span> <span class='keyword'>char</span> *key = <span id="start31"><span id="end32">li</span></span>-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value = g_hash_table_lookup (item-&gt;main_hash, key);</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> <span id="start29"><span id="end30"><span class='keyword'>if</span></span></span> (<span id="start28"><span class="mrange"><span id="end29">value</span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming 'value' is not equal to NULL</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line"> <span id="start27"><span id="end28"><span class='keyword'>char</span></span></span> *val = <span class="mrange"><span id="end26">escape_string_and_dup</span> (<span id="start26"><span id="end27">value</span></span>)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Calling 'escape_string_and_dup'</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> stream_printf (stream, <span class='string_literal'>"%s=%s\n"</span>, key, val);</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> g_free (val);</td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='keyword'>if</span> (item-&gt;sections != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line"> <span class='keyword'>for</span> (li = item-&gt;sections; li != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; li = li-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> Section *section = li-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line"> <span class='comment'>/* Don't write empty sections */</span></td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> <span class='keyword'>if</span> (section-&gt;keys == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> dump_section (item, stream, section);</td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> <span class='keyword'>if</span> (li-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> stream_printf (stream, <span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line"><span class='keyword'>static</span> gpointer</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line">_mate_desktop_item_copy (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>return</span> mate_desktop_item_copy (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line">_mate_desktop_item_free (gpointer boxed)</td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> mate_desktop_item_unref (boxed);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">GType</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line">mate_desktop_item_get_type (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line"> <span class='keyword'>static</span> GType type = 0;</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line"> <span class='keyword'>if</span> (type == 0) {</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> type = g_boxed_type_register_static (<span class='string_literal'>"MateDesktopItem"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> _mate_desktop_item_copy,</td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> _mate_desktop_item_free);</td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line">GQuark</td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line">mate_desktop_item_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='keyword'>static</span> GQuark q = 0;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='keyword'>if</span> (q == 0)</td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> q = g_quark_from_static_string (<span class='string_literal'>"mate-desktop-item-error-quark"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='keyword'>return</span> q;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-f1d0a2.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-f1d0a2.html
new file mode 100644
index 0000000..811e46e
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-f1d0a2.html
@@ -0,0 +1,4136 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-bg.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC 3rd function call argument is an uninitialized value -->
+
+<!-- BUGTYPE Uninitialized argument value -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-bg.c -->
+
+<!-- FILENAME mate-bg.c -->
+
+<!-- FUNCTIONNAME create_img_thumbnail -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT f1d0a2f8454afc030e597ff0e0deff31 -->
+
+<!-- BUGLINE 2258 -->
+
+<!-- BUGCOLUMN 15 -->
+
+<!-- BUGPATHLENGTH 76 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-bg.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 2258, column 15</a><br />3rd function call argument is an uninitialized value</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-bg.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-bg.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"782": 1, "783": 1, "784": 1, "785": 1, "786": 1, "787": 1, "788": 1, "790": 1, "791": 1, "792": 1, "793": 1, "795": 1, "797": 1, "812": 1, "813": 1, "814": 1, "821": 1, "822": 1, "823": 1, "824": 1, "825": 1, "827": 1, "828": 1, "829": 1, "830": 1, "831": 1, "1818": 1, "1819": 1, "1820": 1, "1821": 1, "1831": 1, "1832": 1, "1833": 1, "1834": 1, "1836": 1, "1837": 1, "1839": 1, "1840": 1, "1841": 1, "1845": 1, "1848": 1, "1849": 1, "1850": 1, "1851": 1, "1852": 1, "1853": 1, "1855": 1, "1857": 1, "1858": 1, "1860": 1, "1862": 1, "1864": 1, "1885": 1, "1886": 1, "1887": 1, "1888": 1, "1889": 1, "1890": 1, "1891": 1, "1970": 1, "1971": 1, "1972": 1, "1973": 1, "1974": 1, "1975": 1, "1978": 1, "1980": 1, "1981": 1, "1983": 1, "1987": 1, "1988": 1, "1989": 1, "1990": 1, "1991": 1, "1992": 1, "2181": 1, "2182": 1, "2183": 1, "2184": 1, "2185": 1, "2186": 1, "2187": 1, "2188": 1, "2189": 1, "2190": 1, "2192": 1, "2194": 1, "2206": 1, "2208": 1, "2209": 1, "2210": 1, "2212": 1, "2215": 1, "2217": 1, "2233": 1, "2234": 1, "2235": 1, "2236": 1, "2238": 1, "2239": 1, "2241": 1, "2242": 1, "2244": 1, "2245": 1, "2246": 1, "2247": 1, "2248": 1, "2249": 1, "2251": 1, "2252": 1, "2253": 1, "2254": 1, "2255": 1, "2256": 1, "2258": 1, "2583": 1, "2584": 1, "2585": 1, "2586": 1, "2587": 1, "2588": 1, "2589": 1, "2591": 1, "2599": 1, "2602": 1, "2603": 1, "2604": 1, "2605": 1, "2606": 1, "2607": 1, "2608": 1, "2609": 1, "2610": 1, "2611": 1, "2612": 1, "2613": 1, "2615": 1, "2616": 1, "2617": 1, "2618": 1, "2620": 1, "2632": 1, "2633": 1, "2635": 1, "2636": 1, "2651": 1, "2916": 1, "2917": 1, "2918": 1, "2919": 1, "2920": 1, "2959": 1, "2960": 1, "2961": 1, "2988": 1, "2989": 1, "2990": 1, "2991": 1, "2993": 1, "2995": 1, "2997": 1, "2998": 1, "2999": 1, "3002": 1, "3005": 1, "3006": 1, "3007": 1, "3008": 1, "3009": 1, "3010": 1, "3017": 1, "3018": 1, "3019": 1, "3020": 1, "3021": 1, "3022": 1, "3024": 1, "3027": 1, "3028": 1, "3032": 1, "3034": 1, "3035": 1, "3036": 1, "3037": 1, "3038": 1, "3040": 1, "3042": 1, "3047": 1, "3048": 1, "3054": 1, "3056": 1, "3057": 1, "3059": 1, "3061": 1, "3063": 1, "3065": 1, "3068": 1, "3072": 1, "3078": 1, "3080": 1, "3201": 1, "3202": 1, "3203": 1, "3204": 1, "3205": 1, "3206": 1, "3207": 1, "3208": 1, "3209": 1, "3210": 1, "3211": 1, "3212": 1, "3213": 1, "3214": 1, "3216": 1, "3218": 1, "3220": 1, "3223": 1, "3226": 1, "3227": 1, "3228": 1, "3229": 1, "3230": 1, "3231": 1, "3235": 1, "3236": 1, "3237": 1, "3241": 1, "3244": 1, "3246": 1, "3248": 1, "3249": 1, "3250": 1, "3251": 1}, "20391": {"308": 1, "309": 1, "310": 1, "311": 1, "314": 1, "321": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+ <path class="arrow" id="arrow61"/>
+ <path class="arrow" id="arrow62"/>
+ <path class="arrow" id="arrow63"/>
+ <path class="arrow" id="arrow64"/>
+ <path class="arrow" id="arrow65"/>
+ <path class="arrow" id="arrow66"/>
+ <path class="arrow" id="arrow67"/>
+ <path class="arrow" id="arrow68"/>
+ <path class="arrow" id="arrow69"/>
+ <path class="arrow" id="arrow70"/>
+ <path class="arrow" id="arrow71"/>
+ <path class="arrow" id="arrow72"/>
+ <path class="arrow" id="arrow73"/>
+ <path class="arrow" id="arrow74"/>
+ <path class="arrow" id="arrow75"/>
+ <path class="arrow" id="arrow76"/>
+ <path class="arrow" id="arrow77"/>
+ <path class="arrow" id="arrow78"/>
+ <path class="arrow" id="arrow79"/>
+ <path class="arrow" id="arrow80"/>
+ <path class="arrow" id="arrow81"/>
+ <path class="arrow" id="arrow82"/>
+ <path class="arrow" id="arrow83"/>
+ <path class="arrow" id="arrow84"/>
+ <path class="arrow" id="arrow85"/>
+ <path class="arrow" id="arrow86"/>
+ <path class="arrow" id="arrow87"/>
+ <path class="arrow" id="arrow88"/>
+ <path class="arrow" id="arrow89"/>
+ <path class="arrow" id="arrow90"/>
+ <path class="arrow" id="arrow91"/>
+ <path class="arrow" id="arrow92"/>
+ <path class="arrow" id="arrow93"/>
+ <path class="arrow" id="arrow94"/>
+ <path class="arrow" id="arrow95"/>
+ <path class="arrow" id="arrow96"/>
+ <path class="arrow" id="arrow97"/>
+ <path class="arrow" id="arrow98"/>
+ <path class="arrow" id="arrow99"/>
+ <path class="arrow" id="arrow100"/>
+ <path class="arrow" id="arrow101"/>
+ <path class="arrow" id="arrow102"/>
+ <path class="arrow" id="arrow103"/>
+ <path class="arrow" id="arrow104"/>
+ <path class="arrow" id="arrow105"/>
+ <path class="arrow" id="arrow106"/>
+ <path class="arrow" id="arrow107"/>
+ <path class="arrow" id="arrow108"/>
+ <path class="arrow" id="arrow109"/>
+ <path class="arrow" id="arrow110"/>
+ <path class="arrow" id="arrow111"/>
+ <path class="arrow" id="arrow112"/>
+ <path class="arrow" id="arrow113"/>
+ <path class="arrow" id="arrow114"/>
+ <path class="arrow" id="arrow115"/>
+ <path class="arrow" id="arrow116"/>
+ <path class="arrow" id="arrow117"/>
+ <path class="arrow" id="arrow118"/>
+ <path class="arrow" id="arrow119"/>
+ <path class="arrow" id="arrow120"/>
+ <path class="arrow" id="arrow121"/>
+ <path class="arrow" id="arrow122"/>
+ <path class="arrow" id="arrow123"/>
+ <path class="arrow" id="arrow124"/>
+ <path class="arrow" id="arrow125"/>
+ <path class="arrow" id="arrow126"/>
+ <path class="arrow" id="arrow127"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 128,126,124,124,123,121,119,118,115,113,110,108,105,103,101,100,98,94,92,90,90,88,86,81,79,74,73,72,69,66,64,64,63,61,59,54,53,51,49,47,45,44,44,41,39,38,36,34,33,33,29,29,26,23,22,20,18,16,15,15,12,10,8,7,7,4,3,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"><span class='comment'>matebg.c: Object for the desktop background.</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"><span class='comment'>Copyright (C) 2000 Eazel, Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"><span class='comment'>Copyright (C) 2007-2008 Red Hat, Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"><span class='comment'>Copyright (C) 2012 Jasmine Hassan &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"><span class='comment'>Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"><span class='comment'>This program is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"><span class='comment'>modify it under the terms of the GNU Library General Public License as</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"><span class='comment'>published by the Free Software Foundation; either version 2 of the</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"><span class='comment'>License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"><span class='comment'>This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"><span class='comment'>but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"><span class='comment'>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"><span class='comment'>Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"><span class='comment'>You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='comment'>License along with this program; if not, write to the</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"><span class='comment'>Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='comment'>Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='comment'>Derived from eel-background.c and eel-gdk-pixbuf-extensions.c by</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='comment'>Darin Adler &lt;[email protected]&gt; and Ramiro Estrugo &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='comment'>Authors: Soren Sandmann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>Jasmine Hassan &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;math.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;stdarg.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;glib/gstdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;X11/Xlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;X11/Xatom.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;cairo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#include &lt;mate-bg.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;mate-bg-crossfade.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'># include &lt;cairo-xlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#define <span class='macro'>MATE_BG_CACHE_DIR<span class='macro_popup'>"mate/background"</span></span> "mate/background"</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='comment'>/* We keep the large pixbufs around if the next update</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='comment'>in the slideshow is less than 60 seconds away */</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#define <span class='macro'>KEEP_EXPENSIVE_CACHE_SECS<span class='macro_popup'>60</span></span> 60</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _SlideShow SlideShow;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _Slide Slide;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>struct</span> _Slide {</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>double</span> duration; <span class='comment'>/* in seconds */</span></td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> gboolean fixed;</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GSList* file1;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> GSList* file2; <span class='comment'>/* NULL if fixed is TRUE */</span></td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileSize FileSize;</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='keyword'>struct</span> _FileSize {</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> gint width;</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> gint height;</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>char</span>* file;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"><span class='directive'>#define <span class='macro'>THUMBNAIL_SIZE<span class='macro_popup'>256</span></span> 256</span></td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> FileCacheEntry FileCacheEntry;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"><span class='directive'>#define <span class='macro'>CACHE_SIZE<span class='macro_popup'>4</span></span> 4</span></td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> <span class='comment'>* Implementation of the MateBG class</span></td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='keyword'>struct</span> _MateBG {</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> GObject parent_instance;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> <span class='keyword'>char</span> *filename;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> MateBGPlacement placement;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> MateBGColorType color_type;</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> GdkRGBA primary;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GdkRGBA secondary;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> gboolean is_enabled;</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> GFileMonitor* file_monitor;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> guint changed_id;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> guint transitioned_id;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> guint blow_caches_id;</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> <span class='comment'>/* Cached information, only access through cache accessor functions */</span></td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> SlideShow* slideshow;</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> gint64 file_mtime;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> GdkPixbuf* pixbuf_cache;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> <span class='keyword'>int</span> timeout_id;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> GList* file_cache;</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"><span class='keyword'>struct</span> _MateBGClass {</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> GObjectClass parent_class;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> CHANGED,</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> TRANSITIONED,</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> N_SIGNALS</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"><span class='keyword'>static</span> guint signals[N_SIGNALS] = {0};</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"><span class='macro'>G_DEFINE_TYPE(MateBG, mate_bg, G_TYPE_OBJECT)<span class='macro_popup'>static void mate_bg_init (MateBG *self); static void mate_bg_class_init<br> (MateBGClass *klass); static GType mate_bg_get_type_once (void<br>); static gpointer mate_bg_parent_class = ((void*)0); static gint<br> MateBG_private_offset; static void mate_bg_class_intern_init<br> (gpointer klass) { mate_bg_parent_class = g_type_class_peek_parent<br> (klass); if (MateBG_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;MateBG_private_offset); mate_bg_class_init ((MateBGClass<br>*) klass); } __attribute__ ((__unused__)) static inline gpointer<br> mate_bg_get_instance_private (MateBG *self) { return (((gpointer<br>) ((guint8*) (self) + (glong) (MateBG_private_offset)))); } GType<br> mate_bg_get_type (void) { static gsize static_g_define_type_id<br> = 0; if ((__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); (void<br>) (0 ? (gpointer) *(&amp;static_g_define_type_id) : ((void*)0<br>)); (!(__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = mate_bg_get_type_once ();<br> (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType mate_bg_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> (((GType) ((20) &lt;&lt; (2))), g_intern_static_string ("MateBG"<br>), sizeof (MateBGClass), (GClassInitFunc)(void (*)(void)) mate_bg_class_intern_init<br>, sizeof (MateBG), (GInstanceInitFunc)(void (*)(void)) mate_bg_init<br>, (GTypeFlags) 0); { {{};} } return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"><span class='keyword'>static</span> cairo_surface_t *make_root_pixmap (GdkWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> gint width,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> gint height);</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='comment'>/* Pixbuf utils */</span></td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pixbuf_average_value (GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> GdkRGBA *result);</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *pixbuf_scale_to_fit (GdkPixbuf *src,</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> <span class='keyword'>int</span> max_width,</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> <span class='keyword'>int</span> max_height);</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *pixbuf_scale_to_min (GdkPixbuf *src,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='keyword'>int</span> min_width,</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> <span class='keyword'>int</span> min_height);</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pixbuf_draw_gradient (GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> gboolean horizontal,</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> GdkRGBA *c1,</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> GdkRGBA *c2,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> GdkRectangle *rect);</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pixbuf_tile (GdkPixbuf *src,</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GdkPixbuf *dest);</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pixbuf_blend (GdkPixbuf *src,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='keyword'>int</span> src_x,</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>int</span> src_y,</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> <span class='keyword'>int</span> width,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> <span class='keyword'>int</span> height,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='keyword'>int</span> dest_x,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='keyword'>int</span> dest_y,</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> <span class='keyword'>double</span> alpha);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"><span class='comment'>/* Thumbnail utilities */</span></td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *create_thumbnail_for_filename (MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"><span class='keyword'>static</span> gboolean get_thumb_annotations (GdkPixbuf *thumb,</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> <span class='keyword'>int</span> *orig_width,</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>int</span> *orig_height);</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"><span class='comment'>/* Cache */</span></td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *get_pixbuf_for_size (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> gint num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>int</span> width,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> <span class='keyword'>int</span> height);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> clear_cache (MateBG *bg);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"><span class='keyword'>static</span> gboolean is_different (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='keyword'>static</span> gint64 get_mtime (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename);</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *create_img_thumbnail (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>int</span> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='keyword'>int</span> dest_height,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>int</span> frame_num);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"><span class='keyword'>static</span> SlideShow * get_as_slideshow (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename);</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"><span class='keyword'>static</span> Slide * get_current_slide (SlideShow *show,</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class='keyword'>double</span> *alpha);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"><span class='keyword'>static</span> gboolean slideshow_has_multiple_sizes (SlideShow *show);</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> SlideShow *read_slideshow_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> GError **err);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"><span class='keyword'>static</span> SlideShow *slideshow_ref (SlideShow *show);</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> slideshow_unref (SlideShow *show);</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"><span class='keyword'>static</span> FileSize *find_best_size (GSList *sizes,</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> gint width,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> gint height);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">color_from_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *string,</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> GdkRGBA *colorp)</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='keyword'>if</span> (!string || *string == '\0' || !gdk_rgba_parse (colorp, string))</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> gdk_rgba_parse (colorp, <span class='string_literal'>"#000000"</span>); <span class='comment'>/* If all else fails use black */</span></td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line">color_to_string (<span class='keyword'>const</span> GdkRGBA *color)</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>return</span> g_strdup_printf (<span class='string_literal'>"#%02x%02x%02x"</span>,</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> ((guint) (color-&gt;red * 65535)) &gt;&gt; 8,</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> ((guint) (color-&gt;green * 65535)) &gt;&gt; 8,</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> ((guint) (color-&gt;blue * 65535)) &gt;&gt; 8);</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">do_changed (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> bg-&gt;changed_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (bg)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((bg)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, signals[CHANGED], 0);</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line">queue_changed (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;changed_id &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> g_source_remove (bg-&gt;changed_id);</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> bg-&gt;changed_id = g_timeout_add_full (<span class='macro'>G_PRIORITY_LOW<span class='macro_popup'>300</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> 100,</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> (GSourceFunc)do_changed,</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> bg,</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line">do_transitioned (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> bg-&gt;transitioned_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;pixbuf_cache) {</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> g_object_unref (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> bg-&gt;pixbuf_cache = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (bg)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((bg)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, signals[TRANSITIONED], 0);</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line">queue_transitioned (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;transitioned_id &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> g_source_remove (bg-&gt;transitioned_id);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> bg-&gt;transitioned_id = g_timeout_add_full (<span class='macro'>G_PRIORITY_LOW<span class='macro_popup'>300</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> 100,</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> (GSourceFunc)do_transitioned,</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> bg,</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"><span class='comment'>/* This function loads the user's preferences */</span></td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line">mate_bg_load_from_preferences (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> GSettings *settings;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> settings = g_settings_new (<span class='macro'>MATE_BG_SCHEMA<span class='macro_popup'>"org.mate.background"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> mate_bg_load_from_gsettings (bg, settings);</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> g_object_unref (settings);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> <span class='comment'>/* Queue change to force background redraw */</span></td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> queue_changed (bg);</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"><span class='comment'>/* This function loads default system settings */</span></td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">mate_bg_load_from_system_preferences (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> GSettings *settings;</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='comment'>/* FIXME: we need to bind system settings instead of user but</span></td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='comment'>* that's currently impossible, not implemented yet.</span></td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> <span class='comment'>* Hence, reset to system default values.</span></td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> settings = g_settings_new (<span class='macro'>MATE_BG_SCHEMA<span class='macro_popup'>"org.mate.background"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> mate_bg_load_from_system_gsettings (bg, settings, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> g_object_unref (settings);</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"><span class='comment'>/* This function loads (and optionally resets to) default system settings */</span></td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line">mate_bg_load_from_system_gsettings (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> GSettings *settings,</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> gboolean reset_apply)</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> GSettingsSchema *schema;</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> gchar **keys;</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> gchar **k;</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_BG (bg))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((bg)); GType __t = ((mate_bg_get_type ())); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_BG (bg)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>g_return_if_fail (G_IS_SETTINGS (settings))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((settings)); GType __t = ((g_settings_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "G_IS_SETTINGS (settings)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> g_settings_delay (settings);</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> g_object_get (settings, <span class='string_literal'>"settings-schema"</span>, &amp;schema, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> keys = g_settings_schema_list_keys (schema);</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> g_settings_schema_unref (schema);</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>for</span> (k = keys; *k; k++) {</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> g_settings_reset (settings, *k);</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> g_strfreev (keys);</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>if</span> (reset_apply) {</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='comment'>/* Apply changes atomically. */</span></td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> g_settings_apply (settings);</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> mate_bg_load_from_gsettings (bg, settings);</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> g_settings_revert (settings);</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line">mate_bg_load_from_gsettings (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> GSettings *settings)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>char</span> *tmp;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>char</span> *filename;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> MateBGColorType ctype;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> GdkRGBA c1, c2;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> MateBGPlacement placement;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_BG (bg))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((bg)); GType __t = ((mate_bg_get_type ())); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_BG (bg)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='macro'>g_return_if_fail (G_IS_SETTINGS (settings))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((settings)); GType __t = ((g_settings_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "G_IS_SETTINGS (settings)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> bg-&gt;is_enabled = g_settings_get_boolean (settings, <span class='macro'>MATE_BG_KEY_DRAW_BACKGROUND<span class='macro_popup'>"draw-background"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='comment'>/* Filename */</span></td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> tmp = g_settings_get_string (settings, <span class='macro'>MATE_BG_KEY_PICTURE_FILENAME<span class='macro_popup'>"picture-filename"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>if</span> (tmp &amp;&amp; *tmp != '\0') {</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> <span class='comment'>/* FIXME: UTF-8 checks should go away.</span></td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='comment'>* picture-filename is of type string, which can only be used for</span></td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='comment'>* UTF-8 strings, and some filenames are not, dependending on the</span></td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='comment'>* locale used.</span></td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='comment'>* It would be better (and simpler) to change to a URI instead,</span></td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='comment'>* as URIs are UTF-8 encoded strings.</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='keyword'>if</span> (g_utf8_validate (tmp, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> g_file_test (tmp, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> filename = <span class='macro'>g_strdup (tmp)<span class='macro_popup'>g_strdup_inline (tmp)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> filename = g_filename_from_utf8 (tmp, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='comment'>/* Fallback to default BG if the filename set is non-existent */</span></td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='keyword'>if</span> (filename != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !g_file_test (filename, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_free (filename);</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> g_settings_delay (settings);</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> g_settings_reset (settings, <span class='macro'>MATE_BG_KEY_PICTURE_FILENAME<span class='macro_popup'>"picture-filename"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> filename = g_settings_get_string (settings, <span class='macro'>MATE_BG_KEY_PICTURE_FILENAME<span class='macro_popup'>"picture-filename"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> g_settings_revert (settings);</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> <span class='comment'>//* Check if default background exists, also */</span></td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='keyword'>if</span> (filename != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; !g_file_test (filename, G_FILE_TEST_EXISTS)) {</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> g_free (filename);</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='comment'>/* Colors */</span></td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> tmp = g_settings_get_string (settings, <span class='macro'>MATE_BG_KEY_PRIMARY_COLOR<span class='macro_popup'>"primary-color"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> color_from_string (tmp, &amp;c1);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> tmp = g_settings_get_string (settings, <span class='macro'>MATE_BG_KEY_SECONDARY_COLOR<span class='macro_popup'>"secondary-color"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> color_from_string (tmp, &amp;c2);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='comment'>/* Color type */</span></td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> ctype = g_settings_get_enum (settings, <span class='macro'>MATE_BG_KEY_COLOR_TYPE<span class='macro_popup'>"color-shading-type"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> <span class='comment'>/* Placement */</span></td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> placement = g_settings_get_enum (settings, <span class='macro'>MATE_BG_KEY_PICTURE_PLACEMENT<span class='macro_popup'>"picture-options"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> mate_bg_set_color (bg, ctype, &amp;c1, &amp;c2);</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> mate_bg_set_placement (bg, placement);</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> mate_bg_set_filename (bg, filename);</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> g_free (filename);</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line">mate_bg_save_to_preferences (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> GSettings *settings;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> settings = g_settings_new (<span class='macro'>MATE_BG_SCHEMA<span class='macro_popup'>"org.mate.background"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> mate_bg_save_to_gsettings (bg, settings);</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> g_object_unref (settings);</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line">mate_bg_save_to_gsettings (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> GSettings *settings)</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> gchar *primary;</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> gchar *secondary;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='macro'>g_return_if_fail (MATE_IS_BG (bg))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((bg)); GType __t = ((mate_bg_get_type ())); gboolean __r;<br> if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "MATE_IS_BG (bg)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='macro'>g_return_if_fail (G_IS_SETTINGS (settings))<span class='macro_popup'>do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((settings)); GType __t = ((g_settings_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))))) { }<br> else { g_return_if_fail_warning ("MateDesktop", ((const char<br>*) (__func__)), "G_IS_SETTINGS (settings)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> primary = color_to_string (&amp;bg-&gt;primary);</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> secondary = color_to_string (&amp;bg-&gt;secondary);</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> g_settings_delay (settings);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> g_settings_set_boolean (settings, <span class='macro'>MATE_BG_KEY_DRAW_BACKGROUND<span class='macro_popup'>"draw-background"</span></span>, bg-&gt;is_enabled);</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> g_settings_set_string (settings, <span class='macro'>MATE_BG_KEY_PICTURE_FILENAME<span class='macro_popup'>"picture-filename"</span></span>, bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> g_settings_set_enum (settings, <span class='macro'>MATE_BG_KEY_PICTURE_PLACEMENT<span class='macro_popup'>"picture-options"</span></span>, bg-&gt;placement);</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> g_settings_set_string (settings, <span class='macro'>MATE_BG_KEY_PRIMARY_COLOR<span class='macro_popup'>"primary-color"</span></span>, primary);</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> g_settings_set_string (settings, <span class='macro'>MATE_BG_KEY_SECONDARY_COLOR<span class='macro_popup'>"secondary-color"</span></span>, secondary);</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> g_settings_set_enum (settings, <span class='macro'>MATE_BG_KEY_COLOR_TYPE<span class='macro_popup'>"color-shading-type"</span></span>, bg-&gt;color_type);</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='comment'>/* Apply changes atomically. */</span></td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> g_settings_apply (settings);</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> g_free (primary);</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> g_free (secondary);</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line">mate_bg_init (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line">mate_bg_dispose (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> MateBG *bg = <span class='macro'>MATE_BG (object)<span class='macro_popup'>((((MateBG*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((object)), ((mate_bg_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;file_monitor) {</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> g_object_unref (bg-&gt;file_monitor);</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> bg-&gt;file_monitor = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> clear_cache (bg);</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (mate_bg_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_bg_parent_class)), (((GType) ((20) &lt;&lt; (2)))))<br>)))</span></span>-&gt;dispose (object);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line">mate_bg_finalize (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> MateBG *bg = <span class='macro'>MATE_BG (object)<span class='macro_popup'>((((MateBG*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((object)), ((mate_bg_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;changed_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> g_source_remove (bg-&gt;changed_id);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> bg-&gt;changed_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;transitioned_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> g_source_remove (bg-&gt;transitioned_id);</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> bg-&gt;transitioned_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;blow_caches_id != 0) {</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> g_source_remove (bg-&gt;blow_caches_id);</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> bg-&gt;blow_caches_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> g_free (bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> bg-&gt;filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (mate_bg_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((mate_bg_parent_class)), (((GType) ((20) &lt;&lt; (2)))))<br>)))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line">mate_bg_class_init (MateBGClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass<br>*) ((klass)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> object_class-&gt;dispose = mate_bg_dispose;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> object_class-&gt;finalize = mate_bg_finalize;</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> signals[CHANGED] = g_signal_new (<span class='string_literal'>"changed"</span>,</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> g_cclosure_marshal_VOID__VOID,</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> signals[TRANSITIONED] = g_signal_new (<span class='string_literal'>"transitioned"</span>,</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> g_cclosure_marshal_VOID__VOID,</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line">MateBG *</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line">mate_bg_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>return</span> g_object_new (<span class='macro'>MATE_TYPE_BG<span class='macro_popup'>(mate_bg_get_type ())</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line">mate_bg_set_color (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> MateBGColorType type,</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> GdkRGBA *primary,</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> GdkRGBA *secondary)</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='macro'>g_return_if_fail (bg != NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='macro'>g_return_if_fail (primary != NULL)<span class='macro_popup'>do { if ((primary != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "primary != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;color_type != type ||</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> !gdk_rgba_equal (&amp;bg-&gt;primary, primary) ||</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> (secondary &amp;&amp; !gdk_rgba_equal (&amp;bg-&gt;secondary, secondary))) {</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> bg-&gt;color_type = type;</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> bg-&gt;primary = *primary;</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> <span class='keyword'>if</span> (secondary) {</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> bg-&gt;secondary = *secondary;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> queue_changed (bg);</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line">mate_bg_set_placement (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> MateBGPlacement placement)</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='macro'>g_return_if_fail (bg != NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;placement != placement) {</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> bg-&gt;placement = placement;</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> queue_changed (bg);</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line">MateBGPlacement</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line">mate_bg_get_placement (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, -1)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> (-1); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> <span class='keyword'>return</span> bg-&gt;placement;</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line">mate_bg_get_color (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> MateBGColorType *type,</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> GdkRGBA *primary,</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> GdkRGBA *secondary)</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='macro'>g_return_if_fail (bg != NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>if</span> (type)</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> *type = bg-&gt;color_type;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> <span class='keyword'>if</span> (primary)</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> *primary = bg-&gt;primary;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>if</span> (secondary)</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> *secondary = bg-&gt;secondary;</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line">mate_bg_set_draw_background (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> gboolean draw_background)</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> <span class='macro'>g_return_if_fail (bg != NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;is_enabled != draw_background) {</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> bg-&gt;is_enabled = draw_background;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> queue_changed (bg);</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line">mate_bg_get_draw_background (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, FALSE)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='keyword'>return</span> bg-&gt;is_enabled;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"><span class='keyword'>const</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line">mate_bg_get_filename (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> <span class='keyword'>return</span> bg-&gt;filename;</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line">get_wallpaper_cache_dir (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='keyword'>return</span> g_build_filename (g_get_user_cache_dir(), <span class='macro'>MATE_BG_CACHE_DIR<span class='macro_popup'>"mate/background"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>inline</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">get_wallpaper_cache_prefix_name (gint num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> MateBGPlacement placement,</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> gint width,</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> gint height)</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> <span class='keyword'>return</span> g_strdup_printf (<span class='string_literal'>"%i_%i_%i_%i"</span>, num_monitor, (gint) placement, width, height);</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line">get_wallpaper_cache_filename (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> gint num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> MateBGPlacement placement,</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> gint width,</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> gint height)</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> gchar *cache_filename;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> gchar *cache_prefix_name;</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> gchar *md5_filename;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> gchar *cache_basename;</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> gchar *cache_dir;</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> md5_filename = g_compute_checksum_for_data (G_CHECKSUM_MD5, (<span class='keyword'>const</span> guchar *) filename,</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> strlen (filename));</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> cache_prefix_name = get_wallpaper_cache_prefix_name (num_monitor, placement, width, height);</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> cache_basename = g_strdup_printf (<span class='string_literal'>"%s_%s"</span>, cache_prefix_name, md5_filename);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> cache_dir = get_wallpaper_cache_dir ();</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> cache_filename = g_build_filename (cache_dir, cache_basename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> g_free (cache_prefix_name);</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> g_free (md5_filename);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> g_free (cache_basename);</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> g_free (cache_dir);</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> <span class='keyword'>return</span> cache_filename;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line">cleanup_cache_for_monitor (gchar *cache_dir,</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> gint num_monitor)</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> GDir *g_cache_dir;</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> gchar *monitor_prefix;</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> <span class='keyword'>const</span> gchar *file;</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> g_cache_dir = g_dir_open (cache_dir, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> monitor_prefix = g_strdup_printf (<span class='string_literal'>"%i_"</span>, num_monitor);</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> file = g_dir_read_name (g_cache_dir);</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>while</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> gchar *path = g_build_filename (cache_dir, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='comment'>/* purge files with same monitor id */</span></td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_has_prefix (file, monitor_prefix)<span class='macro_popup'>(__builtin_constant_p (monitor_prefix)? __extension__ ({ const<br> char * const __str = (file); const char * const __prefix = (<br>monitor_prefix); gboolean __result = (0); if (__str == ((void<br>*)0) || __prefix == ((void*)0)) __result = (g_str_has_prefix)<br> (__str, __prefix); else { const size_t __str_len = strlen ((<br>(__str) + !(__str))); const size_t __prefix_len = strlen (((__prefix<br>) + !(__prefix))); if (__str_len &gt;= __prefix_len) __result<br> = memcmp (((__str) + !(__str)), ((__prefix) + !(__prefix)), __prefix_len<br>) == 0; } __result; }) : (g_str_has_prefix) (file, monitor_prefix<br>) )</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> g_file_test (path, G_FILE_TEST_IS_REGULAR))</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> g_unlink (path);</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> file = g_dir_read_name (g_cache_dir);</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> g_free (monitor_prefix);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_dir_close (g_cache_dir);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line">cache_file_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *cache_filename)</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (cache_filename, G_FILE_TEST_IS_REGULAR))</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>return</span> (get_mtime (filename) &lt; get_mtime (cache_filename));</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line">refresh_cache_file (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> GdkPixbuf *new_pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> gint num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> gint width,</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> gint height)</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> gchar *cache_filename;</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> gchar *cache_dir;</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> GdkPixbufFormat *format;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> gchar *format_name;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='keyword'>if</span> ((num_monitor == -1) || (width &lt;= 300) || (height &lt;= 300))</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> cache_filename = get_wallpaper_cache_filename (bg-&gt;filename, num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> bg-&gt;placement, width, height);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> cache_dir = get_wallpaper_cache_dir ();</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='comment'>/* Only refresh scaled file on disk if useful (and don't cache slideshow) */</span></td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> <span class='keyword'>if</span> (!cache_file_is_valid (bg-&gt;filename, cache_filename)) {</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> format = gdk_pixbuf_get_file_info (bg-&gt;filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='keyword'>if</span> (format != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='keyword'>if</span> (!g_file_test (cache_dir, G_FILE_TEST_IS_DIR)) {</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> g_mkdir_with_parents (cache_dir, 0700);</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> cleanup_cache_for_monitor (cache_dir, num_monitor);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> format_name = gdk_pixbuf_format_get_name (format);</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> <span class='keyword'>if</span> (strcmp (format_name, <span class='string_literal'>"jpeg"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> gdk_pixbuf_save (new_pixbuf, cache_filename, format_name,</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"quality"</span>, <span class='string_literal'>"100"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> gdk_pixbuf_save (new_pixbuf, cache_filename, format_name,</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> g_free (format_name);</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> g_free (cache_filename);</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> g_free (cache_dir);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line">file_changed (GFileMonitor *file_monitor,</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> GFile *child,</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> GFile *other_file,</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> GFileMonitorEvent event_type,</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> MateBG *bg = <span class='macro'>MATE_BG (user_data)<span class='macro_popup'>((((MateBG*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((user_data)), ((mate_bg_get_type ()))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> clear_cache (bg);</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> queue_changed (bg);</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line">mate_bg_set_filename (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='macro'>g_return_if_fail (bg != NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='keyword'>if</span> (is_different (bg, filename)) {</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> g_free (bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> bg-&gt;filename = <span class='macro'>g_strdup (filename)<span class='macro_popup'>g_strdup_inline (filename)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> bg-&gt;file_mtime = get_mtime (bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;file_monitor) {</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> g_object_unref (bg-&gt;file_monitor);</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"> bg-&gt;file_monitor = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> GFile *f = g_file_new_for_path (bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> bg-&gt;file_monitor = g_file_monitor_file (f, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='macro'>g_signal_connect (bg-&gt;file_monitor, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((bg-&gt;file_monitor), ("changed"), ((<br>(GCallback) (file_changed))), (bg), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='macro'>G_CALLBACK (file_changed), bg)<span class='macro_popup'>g_signal_connect_data ((bg-&gt;file_monitor), ("changed"), ((<br>(GCallback) (file_changed))), (bg), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> g_object_unref (f);</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> clear_cache (bg);</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> queue_changed (bg);</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">draw_color_area (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> GdkRectangle *rect)</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> guint32 pixel;</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> GdkRectangle extent;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> extent.x = 0;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> extent.y = 0;</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> extent.width = gdk_pixbuf_get_width (dest);</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> extent.height = gdk_pixbuf_get_height (dest);</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> gdk_rectangle_intersect (rect, &amp;extent, rect);</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> <span class='keyword'>switch</span> (bg-&gt;color_type) {</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> <span class='keyword'>case</span> MATE_BG_COLOR_SOLID:</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='comment'>/* not really a big deal to ignore the area of interest */</span></td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> pixel = ((guint) (bg-&gt;primary.red * 0xff) &lt;&lt; 24) |</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> ((guint) (bg-&gt;primary.green * 0xff) &lt;&lt; 16) |</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> ((guint) (bg-&gt;primary.blue * 0xff) &lt;&lt; 8) |</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> (0xff);</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> gdk_pixbuf_fill (dest, pixel);</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='keyword'>case</span> MATE_BG_COLOR_H_GRADIENT:</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> pixbuf_draw_gradient (dest, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, &amp;(bg-&gt;primary), &amp;(bg-&gt;secondary), rect);</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> <span class='keyword'>case</span> MATE_BG_COLOR_V_GRADIENT:</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> pixbuf_draw_gradient (dest, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, &amp;(bg-&gt;primary), &amp;(bg-&gt;secondary), rect);</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line">draw_color (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> GdkPixbuf *dest)</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> GdkRectangle rect;</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> rect.x = 0;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> rect.y = 0;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> rect.width = gdk_pixbuf_get_width (dest);</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> rect.height = gdk_pixbuf_get_height (dest);</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> draw_color_area (bg, dest, &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line">draw_color_each_monitor (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> GdkScreen *screen)</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> GdkRectangle rect;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> gint num_monitors;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> <span class='keyword'>int</span> monitor;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> num_monitors = gdk_display_get_n_monitors (display);</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> <span class='keyword'>for</span> (monitor = 0; monitor &lt; num_monitors; monitor++) {</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> gdk_monitor_get_geometry (gdk_display_get_monitor (display, monitor), &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> draw_color_area (bg, dest, &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line">pixbuf_clip_to_fit (GdkPixbuf *src,</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> <span class='keyword'>int</span> max_width,</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='keyword'>int</span> max_height)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>int</span> src_width, src_height;</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>int</span> w, h;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> <span class='keyword'>int</span> src_x, src_y;</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> src_width = gdk_pixbuf_get_width (src);</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> src_height = gdk_pixbuf_get_height (src);</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>if</span> (src_width &lt; max_width &amp;&amp; src_height &lt; max_height)</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_object_ref (src)<span class='macro_popup'>((__typeof__ (src)) (g_object_ref) (src))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> w = <span class='macro'>MIN(src_width, max_width)<span class='macro_popup'>(((src_width) &lt; (max_width)) ? (src_width) : (max_width))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> h = <span class='macro'>MIN(src_height, max_height)<span class='macro_popup'>(((src_height) &lt; (max_height)) ? (src_height) : (max_height<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> gdk_pixbuf_get_has_alpha (src),</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> 8, w, h);</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> src_x = (src_width - w) / 2;</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> src_y = (src_height - h) / 2;</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> gdk_pixbuf_copy_area (src,</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> src_x, src_y,</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> w, h,</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='keyword'>return</span> pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line">get_scaled_pixbuf (MateBGPlacement placement,</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>int</span> width, <span class='keyword'>int</span> height,</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> <span class='keyword'>int</span> *x, <span class='keyword'>int</span> *y,</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='keyword'>int</span> *w, <span class='keyword'>int</span> *h)</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> GdkPixbuf *new;</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"><span class='directive'>#if 0</span></td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> g_print (<span class='string_literal'>"original_width: %d %d\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> gdk_pixbuf_get_width (pixbuf),</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> gdk_pixbuf_get_height (pixbuf));</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='keyword'>switch</span> (placement) {</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_SPANNED:</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> new = pixbuf_scale_to_fit (pixbuf, width, height);</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_ZOOMED:</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> new = pixbuf_scale_to_min (pixbuf, width, height);</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_FILL_SCREEN:</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> new = gdk_pixbuf_scale_simple (pixbuf, width, height,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> GDK_INTERP_BILINEAR);</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_SCALED:</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> new = pixbuf_scale_to_fit (pixbuf, width, height);</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_CENTERED:</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_TILED:</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> new = pixbuf_clip_to_fit (pixbuf, width, height);</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> *w = gdk_pixbuf_get_width (new);</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> *h = gdk_pixbuf_get_height (new);</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> *x = (width - *w) / 2;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> *y = (height - *h) / 2;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> <span class='keyword'>return</span> new;</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line">draw_image_area (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> gint num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> GdkRectangle *area)</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>int</span> dest_width = area-&gt;width;</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> <span class='keyword'>int</span> dest_height = area-&gt;height;</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> <span class='keyword'>int</span> x, y, w, h;</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> GdkPixbuf *scaled;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> <span class='keyword'>if</span> (!pixbuf)</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> scaled = get_scaled_pixbuf (bg-&gt;placement, pixbuf, dest_width, dest_height, &amp;x, &amp;y, &amp;w, &amp;h);</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>switch</span> (bg-&gt;placement) {</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_TILED:</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> pixbuf_tile (scaled, dest);</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_ZOOMED:</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_CENTERED:</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_FILL_SCREEN:</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_SCALED:</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> pixbuf_blend (scaled, dest, 0, 0, w, h, x + area-&gt;x, y + area-&gt;y, 1.0);</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> <span class='keyword'>case</span> MATE_BG_PLACEMENT_SPANNED:</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> pixbuf_blend (scaled, dest, 0, 0, w, h, x, y, 1.0);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-bg.c", 963<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> refresh_cache_file (bg, scaled, num_monitor, dest_width, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> g_object_unref (scaled);</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line">draw_image_for_thumb (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> GdkPixbuf *dest)</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> GdkRectangle rect;</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> rect.x = 0;</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> rect.y = 0;</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> rect.width = gdk_pixbuf_get_width (dest);</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> rect.height = gdk_pixbuf_get_height (dest);</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> draw_image_area (bg, -1, pixbuf, dest, &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line">draw_once (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> gboolean is_root)</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> GdkRectangle rect;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> gint monitor;</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> <span class='comment'>/* whether we're drawing on root window or normal (Caja) window */</span></td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> monitor = (is_root) ? 0 : -1;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> rect.x = 0;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> rect.y = 0;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> rect.width = gdk_pixbuf_get_width (dest);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> rect.height = gdk_pixbuf_get_height (dest);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> pixbuf = get_pixbuf_for_size (bg, monitor, rect.width, rect.height);</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> <span class='keyword'>if</span> (pixbuf) {</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> draw_image_area (bg, monitor, pixbuf, dest, &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line">draw_each_monitor (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> GdkScreen *screen)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> gint num_monitors = gdk_display_get_n_monitors (display);</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> gint monitor = 0;</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> <span class='keyword'>for</span> (; monitor &lt; num_monitors; monitor++) {</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> GdkRectangle rect;</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> gdk_monitor_get_geometry (gdk_display_get_monitor (display, monitor), &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> pixbuf = get_pixbuf_for_size (bg, monitor, rect.width, rect.height);</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> <span class='keyword'>if</span> (pixbuf) {</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> draw_image_area (bg, monitor, pixbuf, dest, &amp;rect);</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line">mate_bg_draw (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> gboolean is_root)</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='keyword'>if</span> (!bg)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='keyword'>if</span> (is_root &amp;&amp; (bg-&gt;placement != MATE_BG_PLACEMENT_SPANNED)) {</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> draw_color_each_monitor (bg, dest, screen);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> draw_each_monitor (bg, dest, screen);</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> draw_color (bg, dest);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> draw_once (bg, dest, is_root);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line">mate_bg_has_multiple_sizes (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> SlideShow *show;</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, FALSE)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> ret = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> show = get_as_slideshow (bg, bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='keyword'>if</span> (show) {</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> ret = slideshow_has_multiple_sizes (show);</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line">mate_bg_get_pixmap_size (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> <span class='keyword'>int</span> width,</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> <span class='keyword'>int</span> height,</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> <span class='keyword'>int</span> *pixmap_width,</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> <span class='keyword'>int</span> *pixmap_height)</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='keyword'>int</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>if</span> (!pixmap_width)</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> pixmap_width = &amp;dummy;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='keyword'>if</span> (!pixmap_height)</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> pixmap_height = &amp;dummy;</td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> *pixmap_width = width;</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> *pixmap_height = height;</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> <span class='keyword'>switch</span> (bg-&gt;color_type) {</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> <span class='keyword'>case</span> MATE_BG_COLOR_SOLID:</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> *pixmap_width = 1;</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> *pixmap_height = 1;</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> <span class='keyword'>case</span> MATE_BG_COLOR_H_GRADIENT:</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> <span class='keyword'>case</span> MATE_BG_COLOR_V_GRADIENT:</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='comment'>* mate_bg_create_surface:</span></td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='comment'>* @bg: MateBG</span></td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> <span class='comment'>* @window:</span></td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> <span class='comment'>* @width:</span></td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> <span class='comment'>* @height:</span></td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> <span class='comment'>* @root:</span></td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> <span class='comment'>* Create a surface that can be set as background for @window. If @root is</span></td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> <span class='comment'>* TRUE, the surface created will be created by a temporary X server connection</span></td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> <span class='comment'>* so that if someone calls XKillClient on it, it won't affect the application</span></td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> <span class='comment'>* who created it.</span></td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line">cairo_surface_t *</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line">mate_bg_create_surface (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> GdkWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> <span class='keyword'>int</span> width,</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> <span class='keyword'>int</span> height,</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> gboolean root)</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> <span class='keyword'>return</span> mate_bg_create_surface_scale (bg,</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> window,</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> width,</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> height,</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> root);</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> <span class='comment'>* mate_bg_create_surface_scale:</span></td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='comment'>* @bg: MateBG</span></td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> <span class='comment'>* @window:</span></td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='comment'>* @width:</span></td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='comment'>* @height:</span></td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> <span class='comment'>* @scale:</span></td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='comment'>* @root:</span></td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='comment'>* Create a scaled surface that can be set as background for @window. If @root is</span></td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> <span class='comment'>* TRUE, the surface created will be created by a temporary X server connection</span></td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='comment'>* so that if someone calls XKillClient on it, it won't affect the application</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='comment'>* who created it.</span></td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line">cairo_surface_t *</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line">mate_bg_create_surface_scale (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> GdkWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='keyword'>int</span> width,</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> <span class='keyword'>int</span> height,</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>int</span> scale,</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> gboolean root)</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>int</span> pm_width, pm_height;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> cairo_surface_t *surface;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> cairo_t *cr;</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> <span class='macro'>g_return_val_if_fail (window != NULL, NULL)<span class='macro_popup'>do { if ((window != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "window != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;pixbuf_cache &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> (gdk_pixbuf_get_width (bg-&gt;pixbuf_cache) != width ||</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> gdk_pixbuf_get_height (bg-&gt;pixbuf_cache) != height))</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> g_object_unref (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> bg-&gt;pixbuf_cache = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> mate_bg_get_pixmap_size (bg, width, height, &amp;pm_width, &amp;pm_height);</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> display = gdk_display_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='keyword'>if</span> ((root) &amp;&amp; <span class='macro'>GDK_IS_X11_DISPLAY (display)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(display)); GType __t = ((gdk_x11_display_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> surface = make_root_pixmap (window, pm_width * scale, pm_height * scale);</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> surface = gdk_window_create_similar_surface (window, CAIRO_CONTENT_COLOR,</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> pm_width, pm_height);</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> cr = cairo_create (surface);</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> cairo_scale (cr, (<span class='keyword'>double</span>)scale, (<span class='keyword'>double</span>)scale);</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;filename &amp;&amp; bg-&gt;color_type == MATE_BG_COLOR_SOLID) {</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> gdk_cairo_set_source_rgba (cr, &amp;(bg-&gt;primary));</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 8,</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> width, height);</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> mate_bg_draw (bg, pixbuf, gdk_window_get_screen (window), root);</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> cairo_paint (cr);</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> cairo_destroy (cr);</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> <span class='keyword'>return</span> surface;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"><span class='comment'>/* determine if a background is darker or lighter than average, to help</span></td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='comment'>* clients know what colors to draw on top with</span></td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line">mate_bg_is_dark (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> <span class='keyword'>int</span> width,</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> <span class='keyword'>int</span> height)</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> GdkRGBA color;</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='keyword'>int</span> intensity;</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, FALSE)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;color_type == MATE_BG_COLOR_SOLID) {</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> color = bg-&gt;primary;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> color.red = (bg-&gt;primary.red + bg-&gt;secondary.red) / 2;</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> color.green = (bg-&gt;primary.green + bg-&gt;secondary.green) / 2;</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> color.blue = (bg-&gt;primary.blue + bg-&gt;secondary.blue) / 2;</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> pixbuf = get_pixbuf_for_size (bg, -1, width, height);</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> <span class='keyword'>if</span> (pixbuf) {</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> GdkRGBA argb;</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> guchar a, r, g, b;</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> pixbuf_average_value (pixbuf, &amp;argb);</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> a = argb.alpha * 0xff;</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> r = argb.red * 0xff;</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> g = argb.green * 0xff;</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> b = argb.blue * 0xff;</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> color.red = (color.red * (0xFF - a) + r * 0x101 * a) / 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> color.green = (color.green * (0xFF - a) + g * 0x101 * a) / 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> color.blue = (color.blue * (0xFF - a) + b * 0x101 * a) / 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> intensity = ((guint) (color.red * 65535) * 77 +</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> (guint) (color.green * 65535) * 150 +</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> (guint) (color.blue * 65535) * 28) &gt;&gt; 16;</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='keyword'>return</span> intensity &lt; 160; <span class='comment'>/* biased slightly to be dark */</span></td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> <span class='comment'>* Create a persistent pixmap. We create a separate display</span></td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"> <span class='comment'>* and set the closedown mode on it to RetainPermanent.</span></td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"><span class='keyword'>static</span> cairo_surface_t *</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line">make_root_pixmap (GdkWindow *window, gint width, gint height)</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> GdkScreen *screen = gdk_window_get_screen(window);</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> <span class='keyword'>char</span> *disp_name = <span class='macro'>DisplayString (GDK_WINDOW_XDISPLAY (window))<span class='macro_popup'>(((_XPrivDisplay)(((gdk_x11_display_get_xdisplay (gdk_window_get_display<br> (window))))))-&gt;display_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> Display *display;</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> Pixmap xpixmap;</td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> cairo_surface_t *surface;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> <span class='keyword'>int</span> depth;</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> <span class='comment'>/* Desktop background pixmap should be created from dummy X client since most</span></td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> <span class='comment'>* applications will try to kill it with XKillClient later when changing pixmap</span></td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> display = XOpenDisplay (disp_name);</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> <span class='keyword'>if</span> (display == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> g_warning (<span class='string_literal'>"Unable to open display '%s' when setting background pixmap\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> (disp_name) ? disp_name : <span class='string_literal'>"NULL"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> depth = <span class='macro'>DefaultDepth (display, gdk_x11_screen_get_screen_number (screen))<span class='macro_popup'>((&amp;((_XPrivDisplay)(display))-&gt;screens[gdk_x11_screen_get_screen_number<br> (screen)])-&gt;root_depth)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> xpixmap = XCreatePixmap (display, <span class='macro'>GDK_WINDOW_XID (window)<span class='macro_popup'>(gdk_x11_window_get_xid (window))</span></span>, width, height, depth);</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> XFlush (display);</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> XSetCloseDownMode (display, <span class='macro'>RetainPermanent<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> XCloseDisplay (display);</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> surface = cairo_xlib_surface_create (<span class='macro'>GDK_SCREEN_XDISPLAY (screen)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen<br>)))</span></span>, xpixmap,</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='macro'>GDK_VISUAL_XVISUAL (gdk_screen_get_system_visual (screen))<span class='macro_popup'>(gdk_x11_visual_get_xvisual (gdk_screen_get_system_visual (screen<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> width, height);</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> <span class='keyword'>return</span> surface;</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line">get_original_size (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> <span class='keyword'>int</span> *orig_width,</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>int</span> *orig_height)</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> gboolean result;</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>if</span> (gdk_pixbuf_get_file_info (filename, orig_width, orig_height))</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line">get_filename_for_size (MateBG *bg, gint best_width, gint best_height)</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> SlideShow *show;</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> Slide *slide;</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> FileSize *size;</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;filename)</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> show = get_as_slideshow (bg, bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> <span class='keyword'>if</span> (!show) {</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>return</span> bg-&gt;filename;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> slide = get_current_slide (show, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> size = find_best_size (slide-&gt;file1, best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> <span class='keyword'>return</span> size-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line">mate_bg_get_image_size (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> <span class='keyword'>int</span> best_width,</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='keyword'>int</span> best_height,</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='keyword'>int</span> *width,</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> <span class='keyword'>int</span> *height)</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> GdkPixbuf *thumb;</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> <span class='keyword'>const</span> gchar *filename;</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, FALSE)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='macro'>g_return_val_if_fail (factory != NULL, FALSE)<span class='macro_popup'>do { if ((factory != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "factory != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;filename)</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> filename = get_filename_for_size (bg, best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> thumb = create_thumbnail_for_filename (factory, filename);</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> <span class='keyword'>if</span> (thumb) {</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> <span class='keyword'>if</span> (get_thumb_annotations (thumb, width, height))</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> g_object_unref (thumb);</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> <span class='keyword'>if</span> (!result) {</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (get_original_size (filename, width, height))</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line">fit_factor (<span class='keyword'>int</span> from_width, <span class='keyword'>int</span> from_height,</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>int</span> to_width, <span class='keyword'>int</span> to_height)</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>MIN (to_width / (<span class='keyword'>double</span>) from_width, to_height / (<span class='keyword'>double</span>) from_height)<span class='macro_popup'>(((to_width / (double) from_width) &lt; (to_height / (double)<br> from_height)) ? (to_width / (double) from_width) : (to_height<br> / (double) from_height))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='comment'>* mate_bg_create_thumbnail:</span></td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='comment'>* Returns: (transfer full): a #GdkPixbuf showing the background as a thumbnail</span></td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line">GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line">mate_bg_create_thumbnail (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='keyword'>int</span> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='keyword'>int</span> dest_height)</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> GdkPixbuf *result;</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> GdkPixbuf *thumb;</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, NULL)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 8, dest_width, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> draw_color (bg, result);</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> thumb = create_img_thumbnail (bg, factory, screen, dest_width, dest_height, -1);</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>if</span> (thumb) {</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> draw_image_for_thumb (bg, thumb, result);</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> g_object_unref (thumb);</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> <span class='comment'>* mate_bg_get_surface_from_root:</span></td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> <span class='comment'>* @screen: a #GdkScreen</span></td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> <span class='comment'>* This function queries the _XROOTPMAP_ID property from</span></td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> <span class='comment'>* the root window associated with @screen to determine</span></td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> <span class='comment'>* the current root window background surface and returns</span></td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> <span class='comment'>* a copy of it. If the _XROOTPMAP_ID is not set, then</span></td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='comment'>* a black surface is returned.</span></td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> <span class='comment'>* Return value: a #cairo_surface_t if successful or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line">cairo_surface_t *</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line">mate_bg_get_surface_from_root (GdkScreen *screen)</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>int</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> gint format;</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> gulong nitems;</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> gulong bytes_after;</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> guchar *data;</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> Atom type;</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> Display *display;</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> <span class='keyword'>int</span> screen_num;</td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> cairo_surface_t *surface;</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> cairo_surface_t *source_pixmap;</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> <span class='keyword'>int</span> width, height;</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> cairo_t *cr;</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> display = <span class='macro'>GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen))<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> screen_num = gdk_x11_screen_get_screen_number (screen);</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> result = XGetWindowProperty (display,</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> <span class='macro'>RootWindow (display, screen_num)<span class='macro_popup'>((&amp;((_XPrivDisplay)(display))-&gt;screens[screen_num])-&gt;<br>root)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> gdk_x11_get_xatom_by_name (<span class='string_literal'>"_XROOTPMAP_ID"</span>),</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> 0L, 1L, <span class='macro'>False<span class='macro_popup'>0</span></span>, <span class='macro'>XA_PIXMAP<span class='macro_popup'>((Atom) 20)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> &amp;type, &amp;format, &amp;nitems, &amp;bytes_after,</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> &amp;data);</td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> surface = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> source_pixmap = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> <span class='keyword'>if</span> (result != <span class='macro'>Success<span class='macro_popup'>0</span></span> || type != <span class='macro'>XA_PIXMAP<span class='macro_popup'>((Atom) 20)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> format != 32 || nitems != 1) {</td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> XFree (data);</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> <span class='keyword'>if</span> (data != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"> Pixmap xpixmap = *(Pixmap *) data;</td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"> Window root_return;</td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line"> <span class='keyword'>int</span> x_ret, y_ret;</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>int</span> w_ret, h_ret, bw_ret, depth_ret;</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> <span class='keyword'>if</span> (XGetGeometry (<span class='macro'>GDK_SCREEN_XDISPLAY (screen)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> xpixmap,</td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> &amp;root_return,</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> &amp;x_ret, &amp;y_ret, &amp;w_ret, &amp;h_ret, &amp;bw_ret, &amp;depth_ret))</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> source_pixmap = cairo_xlib_surface_create (<span class='macro'>GDK_SCREEN_XDISPLAY (screen)<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"> xpixmap,</td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"> <span class='macro'>GDK_VISUAL_XVISUAL (gdk_screen_get_system_visual (screen))<span class='macro_popup'>(gdk_x11_visual_get_xvisual (gdk_screen_get_system_visual (screen<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> w_ret, h_ret);</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> width = <span class='macro'>WidthOfScreen (gdk_x11_screen_get_xscreen (screen))<span class='macro_popup'>((gdk_x11_screen_get_xscreen (screen))-&gt;width)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> height = <span class='macro'>HeightOfScreen (gdk_x11_screen_get_xscreen (screen))<span class='macro_popup'>((gdk_x11_screen_get_xscreen (screen))-&gt;height)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line"> <span class='keyword'>if</span> (source_pixmap) {</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> surface = cairo_surface_create_similar (source_pixmap,</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line"> CAIRO_CONTENT_COLOR,</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> width, height);</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> cr = cairo_create (surface);</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> cairo_set_source_surface (cr, source_pixmap, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> cairo_paint (cr);</td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> <span class='keyword'>if</span> (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {</td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> cairo_surface_destroy (surface);</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> surface = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> cairo_destroy (cr);</td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> <span class='keyword'>if</span> (surface == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> surface = gdk_window_create_similar_surface (gdk_screen_get_root_window (screen),</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> CAIRO_CONTENT_COLOR,</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> width, height);</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> <span class='keyword'>if</span> (source_pixmap != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> cairo_surface_destroy (source_pixmap);</td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> <span class='keyword'>if</span> (data != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> XFree (data);</td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> <span class='keyword'>return</span> surface;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"><span class='comment'>/* Sets the "ESETROOT_PMAP_ID" property to later be used to free the pixmap,</span></td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line">mate_bg_set_root_pixmap_id (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> Display *display,</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> Pixmap xpixmap)</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> Window xroot = <span class='macro'>RootWindow (display, gdk_x11_screen_get_screen_number (screen))<span class='macro_popup'>((&amp;((_XPrivDisplay)(display))-&gt;screens[gdk_x11_screen_get_screen_number<br> (screen)])-&gt;root)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> <span class='keyword'>char</span> *atom_names[] = {<span class='string_literal'>"_XROOTPMAP_ID"</span>, <span class='string_literal'>"ESETROOT_PMAP_ID"</span>};</td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> Atom atoms[<span class='macro'>G_N_ELEMENTS(atom_names)<span class='macro_popup'>(sizeof (atom_names) / sizeof ((atom_names)[0]))</span></span>] = {0};</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> Atom type;</td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"> <span class='keyword'>int</span> format, result;</td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> nitems, after;</td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>char</span> *data_root, *data_esetroot;</td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> GdkDisplay *gdkdisplay;</td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> <span class='comment'>/* Get atoms for both properties in an array, only if they exist.</span></td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='comment'>* This method is to avoid multiple round-trips to Xserver</span></td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> <span class='keyword'>if</span> (XInternAtoms (display, atom_names, <span class='macro'>G_N_ELEMENTS(atom_names)<span class='macro_popup'>(sizeof (atom_names) / sizeof ((atom_names)[0]))</span></span>, <span class='macro'>True<span class='macro_popup'>1</span></span>, atoms) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> atoms[0] != <span class='macro'>None<span class='macro_popup'>0L</span></span> &amp;&amp; atoms[1] != <span class='macro'>None<span class='macro_popup'>0L</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> result = XGetWindowProperty (display, xroot, atoms[0], 0L, 1L,</td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> <span class='macro'>False<span class='macro_popup'>0</span></span>, <span class='macro'>AnyPropertyType<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"> &amp;type, &amp;format, &amp;nitems, &amp;after,</td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> &amp;data_root);</td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line"> <span class='keyword'>if</span> (data_root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; result == <span class='macro'>Success<span class='macro_popup'>0</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> type == <span class='macro'>XA_PIXMAP<span class='macro_popup'>((Atom) 20)</span></span> &amp;&amp; format == 32 &amp;&amp; nitems == 1) {</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> result = XGetWindowProperty (display, xroot, atoms[1],</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> 0L, 1L, <span class='macro'>False<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"> <span class='macro'>AnyPropertyType<span class='macro_popup'>0L</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> &amp;type, &amp;format, &amp;nitems,</td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"> &amp;after, &amp;data_esetroot);</td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line"> <span class='keyword'>if</span> (data_esetroot != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; result == <span class='macro'>Success<span class='macro_popup'>0</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> type == <span class='macro'>XA_PIXMAP<span class='macro_popup'>((Atom) 20)</span></span> &amp;&amp; format == 32 &amp;&amp; nitems == 1) {</td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> Pixmap xrootpmap = *((Pixmap *) data_root);</td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> Pixmap esetrootpmap = *((Pixmap *) data_esetroot);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> gdkdisplay = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> gdk_x11_display_error_trap_push (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> <span class='keyword'>if</span> (xrootpmap &amp;&amp; xrootpmap == esetrootpmap) {</td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> XKillClient (display, xrootpmap);</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> <span class='keyword'>if</span> (esetrootpmap &amp;&amp; esetrootpmap != xrootpmap) {</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> XKillClient (display, esetrootpmap);</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"> gdk_x11_display_error_trap_pop_ignored (gdkdisplay);</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> <span class='keyword'>if</span> (data_esetroot != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> XFree (data_esetroot);</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> <span class='keyword'>if</span> (data_root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> XFree (data_root);</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"> <span class='comment'>/* Get atoms for both properties in an array, create them if needed.</span></td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> <span class='comment'>* This method is to avoid multiple round-trips to Xserver</span></td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"> <span class='keyword'>if</span> (!XInternAtoms (display, atom_names, <span class='macro'>G_N_ELEMENTS(atom_names)<span class='macro_popup'>(sizeof (atom_names) / sizeof ((atom_names)[0]))</span></span>, <span class='macro'>False<span class='macro_popup'>0</span></span>, atoms) ||</td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> atoms[0] == <span class='macro'>None<span class='macro_popup'>0L</span></span> || atoms[1] == <span class='macro'>None<span class='macro_popup'>0L</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> g_warning (<span class='string_literal'>"Could not create atoms needed to set root pixmap id/properties.\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> <span class='comment'>/* Set new _XROOTMAP_ID and ESETROOT_PMAP_ID properties */</span></td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> XChangeProperty (display, xroot, atoms[0], <span class='macro'>XA_PIXMAP<span class='macro_popup'>((Atom) 20)</span></span>, 32,</td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"> <span class='macro'>PropModeReplace<span class='macro_popup'>0</span></span>, (<span class='keyword'>unsigned</span> <span class='keyword'>char</span> *) &amp;xpixmap, 1);</td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> XChangeProperty (display, xroot, atoms[1], <span class='macro'>XA_PIXMAP<span class='macro_popup'>((Atom) 20)</span></span>, 32,</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> <span class='macro'>PropModeReplace<span class='macro_popup'>0</span></span>, (<span class='keyword'>unsigned</span> <span class='keyword'>char</span> *) &amp;xpixmap, 1);</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> <span class='comment'>* mate_bg_set_surface_as_root:</span></td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> <span class='comment'>* @screen: the #GdkScreen to change root background on</span></td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='comment'>* @surface: the #cairo_surface_t to set root background from.</span></td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> <span class='comment'>* Must be an xlib surface backing a pixmap.</span></td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> <span class='comment'>* Set the root pixmap, and properties pointing to it. We</span></td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> <span class='comment'>* do this atomically with a server grab to make sure that</span></td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> <span class='comment'>* we won't leak the pixmap if somebody else it setting</span></td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> <span class='comment'>* it at the same time. (This assumes that they follow the</span></td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> <span class='comment'>* same conventions we do). @surface should come from a call</span></td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> <span class='comment'>* to mate_bg_create_surface().</span></td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line">mate_bg_set_surface_as_root (GdkScreen *screen, cairo_surface_t *surface)</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> <span class='macro'>g_return_if_fail (screen != NULL)<span class='macro_popup'>do { if ((screen != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "screen != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> <span class='macro'>g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB)<span class='macro_popup'>do { if ((cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB<br>)) { } else { g_return_if_fail_warning ("MateDesktop", ((const<br> char*) (__func__)), "cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> <span class='comment'>/* Desktop background pixmap should be created from dummy X client since most</span></td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> <span class='comment'>* applications will try to kill it with XKillClient later when changing pixmap</span></td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> Display *display = <span class='macro'>GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen))<span class='macro_popup'>(gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen<br>)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> Pixmap pixmap_id = cairo_xlib_surface_get_drawable (surface);</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> Window xroot = <span class='macro'>RootWindow (display, gdk_x11_screen_get_screen_number (screen))<span class='macro_popup'>((&amp;((_XPrivDisplay)(display))-&gt;screens[gdk_x11_screen_get_screen_number<br> (screen)])-&gt;root)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> XGrabServer (display);</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> mate_bg_set_root_pixmap_id (screen, display, pixmap_id);</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> XSetWindowBackgroundPixmap (display, xroot, pixmap_id);</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> XClearWindow (display, xroot);</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> XFlush (display);</td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> XUngrabServer (display);</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> <span class='comment'>* mate_bg_set_surface_as_root_with_crossfade:</span></td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> <span class='comment'>* @screen: the #GdkScreen to change root background on</span></td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> <span class='comment'>* @surface: the cairo xlib surface to set root background from</span></td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> <span class='comment'>* Set the root pixmap, and properties pointing to it.</span></td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"> <span class='comment'>* This function differs from mate_bg_set_surface_as_root()</span></td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> <span class='comment'>* in that it adds a subtle crossfade animation from the</span></td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line"> <span class='comment'>* current root pixmap to the new one.</span></td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> <span class='comment'>* Return value: (transfer full): a #MateBGCrossfade object</span></td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line">MateBGCrossfade *</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line">mate_bg_set_surface_as_root_with_crossfade (GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> cairo_surface_t *surface)</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> GdkWindow *root_window;</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> <span class='keyword'>int</span> width, height;</td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> MateBGCrossfade *fade;</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> cairo_t *cr;</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> cairo_surface_t *old_surface;</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> <span class='macro'>g_return_val_if_fail (screen != NULL, NULL)<span class='macro_popup'>do { if ((screen != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "screen != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> <span class='macro'>g_return_val_if_fail (surface != NULL, NULL)<span class='macro_popup'>do { if ((surface != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "surface != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> root_window = gdk_screen_get_root_window (screen);</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> width = gdk_window_get_width (root_window);</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> height = gdk_window_get_height (root_window);</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> fade = mate_bg_crossfade_new (width, height);</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> old_surface = mate_bg_get_surface_from_root (screen);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> mate_bg_crossfade_set_start_surface (fade, old_surface);</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"> mate_bg_crossfade_set_end_surface (fade, surface);</td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"> <span class='comment'>/* Before setting the surface as a root pixmap, let's have it draw</span></td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line"> <span class='comment'>* the old stuff, just so it won't be noticable</span></td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> <span class='comment'>* (crossfade will later get it back)</span></td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> cr = cairo_create (surface);</td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> cairo_set_source_surface (cr, old_surface, 0, 0);</td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);</td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> cairo_paint (cr);</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> cairo_destroy (cr);</td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> cairo_surface_destroy (old_surface);</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> mate_bg_set_surface_as_root (screen, surface);</td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"> mate_bg_crossfade_start (fade, root_window);</td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line"> <span class='keyword'>return</span> fade;</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"><span class='comment'>/* Implementation of the pixbuf cache */</span></td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"><span class='keyword'>struct</span> _SlideShow</td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> gint ref_count;</td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> <span class='keyword'>double</span> start_time;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> <span class='keyword'>double</span> total_duration;</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"> GQueue *slides;</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> gboolean has_multiple_sizes;</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> <span class='comment'>/* used during parsing */</span></td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>struct</span> tm start_tm;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> GQueue *stack;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,61,2)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (61)) || (2 == (2<br>) &amp;&amp; 78 == (61) &amp;&amp; 3 &gt;= (2)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line">now (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>double</span> microseconds_per_second = (<span class='keyword'>double</span>) <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> gint64 tv;</td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> tv = g_get_real_time ();</td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> <span class='keyword'>return</span> (<span class='keyword'>double</span>) (tv / microseconds_per_second);</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line">now (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>double</span> microseconds_per_second = (<span class='keyword'>double</span>) <span class='macro'>G_USEC_PER_SEC<span class='macro_popup'>1000000</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> GTimeVal tv;</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> g_get_current_time (&amp;tv);</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> <span class='keyword'>return</span> (<span class='keyword'>double</span>)tv.tv_sec + (tv.tv_usec / microseconds_per_second);</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"><span class='keyword'>static</span> Slide *</td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line">get_current_slide (SlideShow *show,</td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> <span class='keyword'>double</span> *alpha)</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> <span class='keyword'>double</span> delta = fmod (now() - show-&gt;start_time, show-&gt;total_duration);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> GList *list;</td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> <span class='keyword'>double</span> elapsed;</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> <span class='keyword'>if</span> (delta &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> delta += show-&gt;total_duration;</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> elapsed = 0;</td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> <span class='keyword'>for</span> (list = show-&gt;slides-&gt;head; list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; list = list-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> Slide *slide = list-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line"> <span class='keyword'>if</span> (elapsed + slide-&gt;duration &gt; delta) {</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> <span class='keyword'>if</span> (alpha)</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> *alpha = (delta - elapsed) / (<span class='keyword'>double</span>)slide-&gt;duration;</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> <span class='keyword'>return</span> slide;</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> i++;</td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> elapsed += slide-&gt;duration;</td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> <span class='comment'>/* this should never happen since we have slides and we should always</span></td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line"> <span class='comment'>* find a current slide for the elapsed time since beginning -- we're</span></td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> <span class='comment'>* looping with fmod() */</span></td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("MateDesktop", "mate-bg.c", 1750<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line">blend (GdkPixbuf *p1,</td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> GdkPixbuf *p2,</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> <span class='keyword'>double</span> alpha)</td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line"> GdkPixbuf *result = gdk_pixbuf_copy (p1);</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> GdkPixbuf *tmp;</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> <span class='keyword'>if</span> (gdk_pixbuf_get_width (p2) != gdk_pixbuf_get_width (p1) ||</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> gdk_pixbuf_get_height (p2) != gdk_pixbuf_get_height (p1)) {</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> tmp = gdk_pixbuf_scale_simple (p2,</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> gdk_pixbuf_get_width (p1),</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> gdk_pixbuf_get_height (p1),</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> GDK_INTERP_BILINEAR);</td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> tmp = <span class='macro'>g_object_ref (p2)<span class='macro_popup'>((__typeof__ (p2)) (g_object_ref) (p2))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> pixbuf_blend (tmp, result, 0, 0, -1, -1, 0, 0, alpha);</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"> g_object_unref (tmp);</td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> PIXBUF,</td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> SLIDESHOW,</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> THUMBNAIL</td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line">} FileType;</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"><span class='keyword'>struct</span> FileCacheEntry</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> FileType type;</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> <span class='keyword'>char</span> *filename;</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> <span class='keyword'>union</span> {</td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> GdkPixbuf *pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> SlideShow *slideshow;</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> GdkPixbuf *thumbnail;</td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> } u;</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line">file_cache_entry_delete (FileCacheEntry *ent)</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> g_free (ent-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> <span class='keyword'>switch</span> (ent-&gt;type) {</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> <span class='keyword'>case</span> PIXBUF:</td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> g_object_unref (ent-&gt;u.pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> <span class='keyword'>case</span> SLIDESHOW:</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> slideshow_unref (ent-&gt;u.slideshow);</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> <span class='keyword'>case</span> THUMBNAIL:</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> g_object_unref (ent-&gt;u.thumbnail);</td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> g_free (ent);</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line">bound_cache (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> <span class='keyword'>while</span> (g_list_length (bg-&gt;file_cache) &gt;= <span class='macro'>CACHE_SIZE<span class='macro_popup'>4</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> GList *last_link = g_list_last (bg-&gt;file_cache);</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> FileCacheEntry *ent = last_link-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> file_cache_entry_delete (ent);</td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> bg-&gt;file_cache = g_list_delete_link (bg-&gt;file_cache, last_link);</td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> FileCacheEntry *</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line">file_cache_lookup (MateBG *bg, FileType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> GList *list;</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> <span class='keyword'>for</span> (list = bg-&gt;file_cache; list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; list = list-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> FileCacheEntry *ent = list-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> <span class='keyword'>if</span> (ent &amp;&amp; ent-&gt;type == type &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> strcmp (ent-&gt;filename, filename) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> <span class='keyword'>return</span> ent;</td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"><span class='keyword'>static</span> FileCacheEntry *</td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line">file_cache_entry_new (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> FileType type,</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> FileCacheEntry *ent = <span class='macro'>g_new0 (FileCacheEntry, 1)<span class='macro_popup'>((FileCacheEntry *) g_malloc0_n ((1), sizeof (FileCacheEntry)<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> <span class='macro'>g_assert (!file_cache_lookup (bg, type, filename))<span class='macro_popup'>do { if (!file_cache_lookup (bg, type, filename)) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-bg.c", 1855, ((const char*) (__func__)<br>), "!file_cache_lookup (bg, type, filename)"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> ent-&gt;type = type;</td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> ent-&gt;filename = <span class='macro'>g_strdup (filename)<span class='macro_popup'>g_strdup_inline (filename)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> bg-&gt;file_cache = g_list_prepend (bg-&gt;file_cache, ent);</td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> bound_cache (bg);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> <span class='keyword'>return</span> ent;</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line">file_cache_add_pixbuf (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> GdkPixbuf *pixbuf)</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> FileCacheEntry *ent = file_cache_entry_new (bg, PIXBUF, filename);</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> ent-&gt;u.pixbuf = <span class='macro'>g_object_ref (pixbuf)<span class='macro_popup'>((__typeof__ (pixbuf)) (g_object_ref) (pixbuf))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line">file_cache_add_thumbnail (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> GdkPixbuf *pixbuf)</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> FileCacheEntry *ent = file_cache_entry_new (bg, THUMBNAIL, filename);</td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> ent-&gt;u.thumbnail = <span class='macro'>g_object_ref (pixbuf)<span class='macro_popup'>((__typeof__ (pixbuf)) (g_object_ref) (pixbuf))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line">file_cache_add_slide_show (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> SlideShow *show)</td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> FileCacheEntry *ent = file_cache_entry_new (bg, SLIDESHOW, filename);</td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> ent-&gt;u.slideshow = slideshow_ref (show);</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line">load_from_cache_file (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> gint num_monitor,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> gint best_width,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> gint best_height)</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> GdkPixbuf *pixbuf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> gchar *cache_filename;</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> cache_filename = get_wallpaper_cache_filename (filename, num_monitor, bg-&gt;placement,</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> <span class='keyword'>if</span> (cache_file_is_valid (filename, cache_filename))</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> pixbuf = gdk_pixbuf_new_from_file (cache_filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> g_free (cache_filename);</td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> <span class='keyword'>return</span> pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line">get_as_pixbuf_for_size (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> gint monitor,</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> gint best_width,</td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> gint best_height)</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>const</span> FileCacheEntry *ent;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> <span class='keyword'>if</span> ((ent = file_cache_lookup (bg, PIXBUF, filename))) {</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_object_ref (ent-&gt;u.pixbuf)<span class='macro_popup'>((__typeof__ (ent-&gt;u.pixbuf)) (g_object_ref) (ent-&gt;u.pixbuf<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> GdkPixbufFormat *format;</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> GdkPixbuf *pixbuf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> gchar *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> GdkPixbuf *tmp_pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> <span class='comment'>/* Try to hit local cache first if relevant */</span></td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> <span class='keyword'>if</span> (monitor != -1)</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> pixbuf = load_from_cache_file (bg, filename, monitor,</td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> <span class='keyword'>if</span> (!pixbuf) {</td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='comment'>/* If scalable choose maximum size */</span></td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> format = gdk_pixbuf_get_file_info (filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> <span class='keyword'>if</span> (format != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> tmp = gdk_pixbuf_format_get_name (format);</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> <span class='keyword'>if</span> (g_strcmp0 (tmp, <span class='string_literal'>"svg"</span>) == 0 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> (best_width &gt; 0 &amp;&amp; best_height &gt; 0) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> (bg-&gt;placement == MATE_BG_PLACEMENT_FILL_SCREEN ||</td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> bg-&gt;placement == MATE_BG_PLACEMENT_SCALED ||</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> bg-&gt;placement == MATE_BG_PLACEMENT_ZOOMED))</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"> pixbuf = gdk_pixbuf_new_from_file_at_size (filename,</td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> best_width,</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> best_height, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> pixbuf = gdk_pixbuf_new_from_file (filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> <span class='keyword'>if</span> (tmp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> <span class='keyword'>if</span> (pixbuf) {</td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> tmp_pixbuf = gdk_pixbuf_apply_embedded_orientation (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> g_object_unref (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> pixbuf = tmp_pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> file_cache_add_pixbuf (bg, filename, pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> <span class='keyword'>return</span> pixbuf;</td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"><span id="start37"><span id="start122"><span class='keyword'>static</span></span></span> SlideShow *</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line">get_as_slideshow (MateBG *bg, <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span id="start36"><span id="end37"><span id="start121"><span id="end122"><span class='keyword'>const</span></span></span></span></span> FileCacheEntry *ent;</td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> <span class='keyword'>if</span> ((<span id="start35"><span class="mrange"><span id="end36"><span id="start120"><span class="mrange"><span id="end121">ent</span></span></span></span></span></span> = file_cache_lookup (bg, SLIDESHOW, filename))) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:14ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'ent' is null</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path46" class="msg msgEvent" style="margin-left:14ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">46</div></td><td><div class="PathNav"><a href="#Path45" title="Previous event (45)">&#x2190;</a></div></td><td>Assuming 'ent' is non-null</td><td><div class="PathNav"><a href="#Path47" title="Next event (47)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path47" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">47</div></td><td><div class="PathNav"><a href="#Path46" title="Previous event (46)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path48" title="Next event (48)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> <span class="mrange"><span id="end33"><span id="start34"><span id="end35"><span class='keyword'>return</span></span></span></span> slideshow_ref (<span id="start33"><span id="end34">ent</span></span>-&gt;u.slideshow)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path48" class="msg msgEvent" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">48</div></td><td><div class="PathNav"><a href="#Path47" title="Previous event (47)">&#x2190;</a></div></td><td>Returning pointer, which participates in a condition later</td><td><div class="PathNav"><a href="#Path49" title="Next event (49)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> <span id="start84"><span id="end85"><span id="start119"><span id="end120">SlideShow</span></span></span></span> *show = <span id="start85"><span class="mrange"><span class="mrange"><span id="end118">read_slideshow_file</span></span> (<span id="start118"><span id="end119">filename</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:35ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Calling 'read_slideshow_file'</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgEvent" style="margin-left:35ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Returning from 'read_slideshow_file'</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> <span id="start83"><span id="end84"><span class='keyword'>if</span></span></span> (<span id="start82"><span id="end83"><span class='variable'>show<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>22.1</div></td><td>'show' is non-null</td></tr></tbody></table></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path24" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"> <span id="start79"><span id="end80"><span id="start81"><span id="end82">file_cache_add_slide_show</span></span></span></span> (<span id="start80"><span id="end81">bg</span></span>, filename, show);</td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> <span id="end79"><span class='keyword'>return</span></span> show;</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"><span id="start11"><span id="start19"><span id="start48"><span class='keyword'>static</span></span></span></span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line">get_as_thumbnail (MateBG *bg, MateDesktopThumbnailFactory *factory, <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> <span id="start10"><span id="end11"><span id="start18"><span id="end19"><span id="start47"><span id="end48"><span class='keyword'>const</span></span></span></span></span></span></span> FileCacheEntry *ent;</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> <span class='keyword'>if</span> ((<span id="start9"><span class="mrange"><span id="end10"><span id="start17"><span class="mrange"><span id="end18"><span id="start46"><span class="mrange"><span id="end47">ent</span></span></span></span></span></span></span></span></span> = file_cache_lookup (bg, THUMBNAIL, filename))) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path39" class="msg msgEvent" style="margin-left:14ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">39</div></td><td><div class="PathNav"><a href="#Path38" title="Previous event (38)">&#x2190;</a></div></td><td>Assuming 'ent' is non-null</td><td><div class="PathNav"><a href="#Path40" title="Next event (40)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path40" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">40</div></td><td><div class="PathNav"><a href="#Path39" title="Previous event (39)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path41" title="Next event (41)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path56" class="msg msgEvent" style="margin-left:14ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">56</div></td><td><div class="PathNav"><a href="#Path55" title="Previous event (55)">&#x2190;</a></div></td><td>Assuming 'ent' is non-null</td><td><div class="PathNav"><a href="#Path57" title="Next event (57)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path57" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">57</div></td><td><div class="PathNav"><a href="#Path56" title="Previous event (56)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path58" title="Next event (58)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path61" class="msg msgEvent" style="margin-left:14ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">61</div></td><td><div class="PathNav"><a href="#Path60" title="Previous event (60)">&#x2190;</a></div></td><td>Assuming 'ent' is non-null</td><td><div class="PathNav"><a href="#Path62" title="Next event (62)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path62" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">62</div></td><td><div class="PathNav"><a href="#Path61" title="Previous event (61)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path63" title="Next event (63)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class="mrange"><span id="end7"><span id="start8"><span id="end9"><span class="mrange"><span id="end15"><span id="start16"><span id="end17"><span class="mrange"><span id="end44"><span id="start45"><span id="end46"><span class='keyword'>return</span></span></span></span></span></span></span></span></span></span> <span id="start7"><span id="end8"><span id="start15"><span id="end16"><span id="start44"><span id="end45"><span class='macro'>g_object_ref</span></span></span></span></span></span></span></span></span> (ent-&gt;u.thumbnail)<span class='macro_popup'>((__typeof__ (ent-&gt;u.thumbnail)) (g_object_ref) (ent-&gt;u<br>.thumbnail))</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path41" class="msg msgEvent" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">41</div></td><td><div class="PathNav"><a href="#Path40" title="Previous event (40)">&#x2190;</a></div></td><td>Returning pointer, which participates in a condition later</td><td><div class="PathNav"><a href="#Path42" title="Next event (42)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path58" class="msg msgEvent" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">58</div></td><td><div class="PathNav"><a href="#Path57" title="Previous event (57)">&#x2190;</a></div></td><td>Returning pointer, which participates in a condition later</td><td><div class="PathNav"><a href="#Path59" title="Next event (59)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path63" class="msg msgEvent" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">63</div></td><td><div class="PathNav"><a href="#Path62" title="Previous event (62)">&#x2190;</a></div></td><td>Returning pointer, which participates in a condition later</td><td><div class="PathNav"><a href="#Path64" title="Next event (64)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> GdkPixbuf *thumb = create_thumbnail_for_filename (factory, filename);</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> <span class='keyword'>if</span> (thumb)</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> file_cache_add_thumbnail (bg, filename, thumb);</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> <span class='keyword'>return</span> thumb;</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line">blow_expensive_caches (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> MateBG *bg = data;</td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> GList *list, *next;</td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> bg-&gt;blow_caches_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> <span class='keyword'>for</span> (list = bg-&gt;file_cache; list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; list = next) {</td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> FileCacheEntry *ent = list-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"> next = list-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>if</span> (ent-&gt;type == PIXBUF) {</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> file_cache_entry_delete (ent);</td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> bg-&gt;file_cache = g_list_delete_link (bg-&gt;file_cache,</td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> list);</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;pixbuf_cache) {</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> g_object_unref (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> bg-&gt;pixbuf_cache = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line">blow_expensive_caches_in_idle (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;blow_caches_id == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> bg-&gt;blow_caches_id =</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> g_idle_add (blow_expensive_caches,</td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> bg);</td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line">on_timeout (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line"> MateBG *bg = data;</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> bg-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> queue_transitioned (bg);</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>double</span></td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line">get_slide_timeout (Slide *slide)</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> <span class='keyword'>double</span> timeout;</td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> <span class='keyword'>if</span> (slide-&gt;fixed) {</td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> timeout = slide-&gt;duration;</td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='comment'>/* Maybe the number of steps should be configurable? */</span></td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> <span class='comment'>/* In the worst case we will do a fade from 0 to 256, which mean</span></td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line"> <span class='comment'>* we will never use more than 255 steps, however in most cases</span></td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> <span class='comment'>* the first and last value are similar and users can't percieve</span></td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"> <span class='comment'>* changes in pixel values as small as 1/255th. So, lets not waste</span></td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line"> <span class='comment'>* CPU cycles on transitioning to often.</span></td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> <span class='comment'>* 64 steps is enough for each step to be just detectable in a 16bit</span></td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> <span class='comment'>* color mode in the worst case, so we'll use this as an approximation</span></td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> <span class='comment'>* of whats detectable.</span></td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> timeout = slide-&gt;duration / 64.0;</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line"> <span class='keyword'>return</span> timeout;</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line">ensure_timeout (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> Slide *slide)</td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;timeout_id) {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> <span class='keyword'>double</span> timeout = get_slide_timeout (slide);</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> <span class='comment'>/* G_MAXUINT means "only one slide" */</span></td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> <span class='keyword'>if</span> (timeout &lt; <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> bg-&gt;timeout_id = g_timeout_add_full (</td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='macro'>G_PRIORITY_LOW<span class='macro_popup'>300</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> timeout * 1000, on_timeout, bg, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"><span class='keyword'>static</span> gint64</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line">get_mtime (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> gint64 mtime = (gint64)-1;</td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> <span class='keyword'>if</span> (filename) {</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> file = g_file_new_for_path (filename);</td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> info = g_file_query_info (file, <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> G_FILE_QUERY_INFO_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> mtime = g_file_info_get_attribute_uint64 (info,</td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_TIME_MODIFIED<span class='macro_popup'>"time::modified"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> <span class='keyword'>return</span> mtime;</td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line">scale_thumbnail (MateBGPlacement placement,</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> GdkPixbuf *thumb,</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> <span class='keyword'>int</span> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> <span class='keyword'>int</span> dest_height)</td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> <span class='keyword'>int</span> o_width;</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> <span class='keyword'>int</span> o_height;</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> <span class='keyword'>if</span> (placement != MATE_BG_PLACEMENT_TILED &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> placement != MATE_BG_PLACEMENT_CENTERED) {</td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> <span class='comment'>/* In this case, the pixbuf will be scaled to fit the screen anyway,</span></td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='comment'>* so just return the pixbuf here</span></td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_object_ref (thumb)<span class='macro_popup'>((__typeof__ (thumb)) (g_object_ref) (thumb))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> <span class='keyword'>if</span> (get_thumb_annotations (thumb, &amp;o_width, &amp;o_height) ||</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> (filename &amp;&amp; get_original_size (filename, &amp;o_width, &amp;o_height))) {</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> <span class='keyword'>int</span> scr_height = <span class='macro'>HeightOfScreen (gdk_x11_screen_get_xscreen (screen))<span class='macro_popup'>((gdk_x11_screen_get_xscreen (screen))-&gt;height)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> <span class='keyword'>int</span> scr_width = <span class='macro'>WidthOfScreen (gdk_x11_screen_get_xscreen (screen))<span class='macro_popup'>((gdk_x11_screen_get_xscreen (screen))-&gt;width)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> <span class='keyword'>int</span> thumb_width = gdk_pixbuf_get_width (thumb);</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> <span class='keyword'>int</span> thumb_height = gdk_pixbuf_get_height (thumb);</td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> <span class='keyword'>double</span> screen_to_dest = fit_factor (scr_width, scr_height,</td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line"> dest_width, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> <span class='keyword'>double</span> thumb_to_orig = fit_factor (thumb_width, thumb_height,</td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"> o_width, o_height);</td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> <span class='keyword'>double</span> f = thumb_to_orig * screen_to_dest;</td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> <span class='keyword'>int</span> new_width, new_height;</td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> new_width = floor (thumb_width * f + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> new_height = floor (thumb_height * f + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> <span class='keyword'>if</span> (placement == MATE_BG_PLACEMENT_TILED) {</td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> <span class='comment'>/* Heuristic to make sure tiles don't become so small that</span></td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='comment'>* they turn into a blur.</span></td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> <span class='comment'>* This is strictly speaking incorrect, but the resulting</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> <span class='comment'>* thumbnail gives a much better idea what the background</span></td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='comment'>* will actually look like.</span></td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='keyword'>if</span> ((new_width &lt; 32 || new_height &lt; 32) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> (new_width &lt; o_width / 4 || new_height &lt; o_height / 4)) {</td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> new_width = o_width / 4;</td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> new_height = o_height / 4;</td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> thumb = gdk_pixbuf_scale_simple (thumb, new_width, new_height,</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> GDK_INTERP_BILINEAR);</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> <span class='macro'>g_object_ref (thumb)<span class='macro_popup'>((__typeof__ (thumb)) (g_object_ref) (thumb))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> <span class='keyword'>return</span> thumb;</td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"><span class='comment'>/* frame_num determines which slide to thumbnail.</span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='comment'>* -1 means 'current slide'.</span></td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"><span id="start52"><span class='keyword'>static</span></span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line">create_img_thumbnail (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> <span class='keyword'>int</span> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='keyword'>int</span> dest_height,</td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='keyword'>int</span> frame_num)</td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;<span id="start51"><span id="end52"><span class='variable'>filename<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>36.1</div></td><td>Field 'filename' is non-null</td></tr></tbody></table></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path37" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">37</div></td><td><div class="PathNav"><a href="#Path36" title="Previous event (36)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path38" title="Next event (38)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span id="start50"><span id="end51">GdkPixbuf</span></span> *thumb;</td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"> <span id="start42"><span id="end43"><span id="start49"><span id="end50">thumb</span></span></span></span> = <span id="start43"><span class="mrange"><span class="mrange"><span id="end49">get_as_thumbnail</span></span> (bg, factory, bg-&gt;filename)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path38" class="msg msgEvent" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">38</div></td><td><div class="PathNav"><a href="#Path37" title="Previous event (37)">&#x2190;</a></div></td><td>Calling 'get_as_thumbnail'</td><td><div class="PathNav"><a href="#Path39" title="Next event (39)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path42" class="msg msgEvent" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">42</div></td><td><div class="PathNav"><a href="#Path41" title="Previous event (41)">&#x2190;</a></div></td><td>Returning from 'get_as_thumbnail'</td><td><div class="PathNav"><a href="#Path43" title="Next event (43)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> <span id="start41"><span id="end42"><span class='keyword'>if</span></span></span> (<span id="start40"><span class="mrange"><span id="end41">thumb</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path43" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">43</div></td><td><div class="PathNav"><a href="#Path42" title="Previous event (42)">&#x2190;</a></div></td><td>Assuming 'thumb' is null</td><td><div class="PathNav"><a href="#Path44" title="Next event (44)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path44" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">44</div></td><td><div class="PathNav"><a href="#Path43" title="Previous event (43)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path45" title="Next event (45)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> GdkPixbuf *result;</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> result = scale_thumbnail (bg-&gt;placement,</td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> bg-&gt;filename,</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line"> thumb,</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> screen,</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line"> g_object_unref (thumb);</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> <span id="start31"><span id="end32"><span id="start39"><span id="end40">SlideShow</span></span></span></span> *show = <span id="start32"><span class="mrange"><span class="mrange"><span id="end38">get_as_slideshow</span></span> (<span id="start38"><span id="end39">bg</span></span>, bg-&gt;filename)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path45" class="msg msgEvent" style="margin-left:43ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">45</div></td><td><div class="PathNav"><a href="#Path44" title="Previous event (44)">&#x2190;</a></div></td><td>Calling 'get_as_slideshow'</td><td><div class="PathNav"><a href="#Path46" title="Next event (46)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path49" class="msg msgEvent" style="margin-left:43ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">49</div></td><td><div class="PathNav"><a href="#Path48" title="Previous event (48)">&#x2190;</a></div></td><td>Returning from 'get_as_slideshow'</td><td><div class="PathNav"><a href="#Path50" title="Next event (50)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span id="start30"><span id="end31"><span class='keyword'>if</span></span></span> (<span id="start29"><span id="end30"><span class='variable'>show<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>49.1</div></td><td>'show' is non-null</td></tr></tbody></table></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path50" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">50</div></td><td><div class="PathNav"><a href="#Path49" title="Previous event (49)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path51" title="Next event (51)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> <span id="start28"><span class="mrange"><span id="end29"><span class='keyword'>double</span></span></span> alpha</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path51" class="msg msgEvent" style="margin-left:33ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">51</div></td><td><div class="PathNav"><a href="#Path50" title="Previous event (50)">&#x2190;</a></div></td><td>'alpha' declared without an initial value</td><td><div class="PathNav"><a href="#Path52" title="Next event (52)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> <span id="start27"><span id="end28">Slide</span></span> *slide;</td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> <span class='keyword'>if</span> (frame_num == -1)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path52" class="msg msgControl" style="margin-left:33ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">52</div></td><td><div class="PathNav"><a href="#Path51" title="Previous event (51)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path53" title="Next event (53)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> slide = get_current_slide (show, &amp;alpha);</td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> <span id="start24"><span id="end25"><span id="start26"><span id="end27">slide</span></span></span></span> = g_queue_peek_nth (<span id="start25"><span id="end26">show</span></span>-&gt;slides, frame_num);</td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span id="start23"><span id="end24"><span class='keyword'>if</span></span></span> (<span id="start22"><span class="mrange"><span id="end23">slide</span></span>-&gt;fixed</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path53" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">53</div></td><td><div class="PathNav"><a href="#Path52" title="Previous event (52)">&#x2190;</a></div></td><td>Assuming field 'fixed' is 0</td><td><div class="PathNav"><a href="#Path54" title="Next event (54)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path54" class="msg msgControl" style="margin-left:33ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">54</div></td><td><div class="PathNav"><a href="#Path53" title="Previous event (53)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path55" title="Next event (55)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> GdkPixbuf *tmp;</td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> FileSize *fs;</td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> fs = find_best_size (slide-&gt;file1, dest_width, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"> tmp = get_as_thumbnail (bg, factory, fs-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line"> <span class='keyword'>if</span> (tmp) {</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> thumb = scale_thumbnail (bg-&gt;placement,</td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> fs-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> tmp,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> screen,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line"> dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> g_object_unref (tmp);</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> FileSize *<span id="start21"><span id="end22">fs1</span></span>, *fs2;</td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"> GdkPixbuf *p1, *p2;</td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> fs1 = find_best_size (slide-&gt;file1, dest_width, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> <span id="start13"><span id="end14"><span id="start20"><span id="end21">p1</span></span></span></span> = <span id="start14"><span class="mrange"><span class="mrange"><span id="end20">get_as_thumbnail</span></span> (bg, factory, fs1-&gt;file)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path55" class="msg msgEvent" style="margin-left:46ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">55</div></td><td><div class="PathNav"><a href="#Path54" title="Previous event (54)">&#x2190;</a></div></td><td>Calling 'get_as_thumbnail'</td><td><div class="PathNav"><a href="#Path56" title="Next event (56)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path59" class="msg msgEvent" style="margin-left:46ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">59</div></td><td><div class="PathNav"><a href="#Path58" title="Previous event (58)">&#x2190;</a></div></td><td>Returning from 'get_as_thumbnail'</td><td><div class="PathNav"><a href="#Path60" title="Next event (60)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> fs2 = find_best_size (slide-&gt;file2, dest_width, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> <span id="start5"><span id="end6"><span id="start12"><span id="end13">p2</span></span></span></span> = <span id="start6"><span class="mrange"><span class="mrange"><span id="end12">get_as_thumbnail</span></span> (bg, factory, fs2-&gt;file)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path60" class="msg msgEvent" style="margin-left:46ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">60</div></td><td><div class="PathNav"><a href="#Path59" title="Previous event (59)">&#x2190;</a></div></td><td>Calling 'get_as_thumbnail'</td><td><div class="PathNav"><a href="#Path61" title="Next event (61)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path64" class="msg msgEvent" style="margin-left:46ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">64</div></td><td><div class="PathNav"><a href="#Path63" title="Previous event (63)">&#x2190;</a></div></td><td>Returning from 'get_as_thumbnail'</td><td><div class="PathNav"><a href="#Path65" title="Next event (65)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span id="start4"><span id="end5"><span class='keyword'>if</span></span></span> (<span id="start3"><span class="mrange"><span id="end4">p1</span></span></span> &amp;&amp; <span id="start2"><span class="mrange"><span id="end3">p2</span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path65" class="msg msgEvent" style="margin-left:45ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">65</div></td><td><div class="PathNav"><a href="#Path64" title="Previous event (64)">&#x2190;</a></div></td><td>Assuming 'p1' is non-null</td><td><div class="PathNav"><a href="#Path66" title="Next event (66)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path66" class="msg msgEvent" style="margin-left:51ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">66</div></td><td><div class="PathNav"><a href="#Path65" title="Previous event (65)">&#x2190;</a></div></td><td>Assuming 'p2' is non-null</td><td><div class="PathNav"><a href="#Path67" title="Next event (67)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path67" class="msg msgControl" style="margin-left:41ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">67</div></td><td><div class="PathNav"><a href="#Path66" title="Previous event (66)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#EndPath" title="Next event (68)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> GdkPixbuf *<span id="start1"><span id="end2">thumb1</span></span>, *thumb2;</td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> thumb1 = scale_thumbnail (bg-&gt;placement,</td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> fs1-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> p1,</td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> screen,</td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"> dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> thumb2 = scale_thumbnail (bg-&gt;placement,</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> fs2-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> p2,</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line"> screen,</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> dest_height);</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> <span id="start0"><span id="end1">thumb</span></span> = <span id="end0">blend</span> (thumb1, thumb2, <span class="mrange">alpha</span>);</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:57ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">68</div></td><td><div class="PathNav"><a href="#Path67" title="Previous event (67)">&#x2190;</a></div></td><td>3rd function call argument is an uninitialized value</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"> g_object_unref (thumb1);</td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"> g_object_unref (thumb2);</td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"> <span class='keyword'>if</span> (p1)</td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"> g_object_unref (p1);</td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"> <span class='keyword'>if</span> (p2)</td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"> g_object_unref (p2);</td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"> ensure_timeout (bg, slide);</td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"> <span class='keyword'>return</span> thumb;</td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> <span class='comment'>* Find the FileSize that best matches the given size.</span></td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='comment'>* Do two passes; the first pass only considers FileSizes</span></td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='comment'>* that are larger than the given size.</span></td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> <span class='comment'>* We are looking for the image that best matches the aspect ratio.</span></td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> <span class='comment'>* When two images have the same aspect ratio, prefer the one whose</span></td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> <span class='comment'>* width is closer to the given width.</span></td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"><span class='keyword'>static</span> FileSize *</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line">find_best_size (GSList *sizes, gint width, gint height)</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> GSList *s;</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line"> gdouble a, d, distance;</td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> FileSize *best = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"> gint pass;</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> a = width/(gdouble)height;</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> distance = 10000.0;</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> <span class='keyword'>for</span> (pass = 0; pass &lt; 2; pass++) {</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line"> <span class='keyword'>for</span> (s = sizes; s; s = s-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> FileSize *size = s-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line"> <span class='keyword'>if</span> (pass == 0 &amp;&amp; (size-&gt;width &lt; width || size-&gt;height &lt; height))</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> d = fabs (a - size-&gt;width/(gdouble)size-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> <span class='keyword'>if</span> (d &lt; distance) {</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> distance = d;</td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> best = size;</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (d == distance) {</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> <span class='keyword'>if</span> (best &amp;&amp; (abs (size-&gt;width - width) &lt; abs (best-&gt;width - width))) {</td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> best = size;</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> <span class='keyword'>if</span> (best)</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"> <span class='keyword'>return</span> best;</td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line">get_pixbuf_for_size (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> gint monitor,</td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> gint best_width,</td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> gint best_height)</td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> guint time_until_next_change;</td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> gboolean hit_cache = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line"> <span class='comment'>/* only hit the cache if the aspect ratio matches */</span></td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;pixbuf_cache) {</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>int</span> width, height;</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> width = gdk_pixbuf_get_width (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> height = gdk_pixbuf_get_height (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> hit_cache = 0.2 &gt; fabs ((best_width / (<span class='keyword'>double</span>)best_height) - (width / (<span class='keyword'>double</span>)height));</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> <span class='keyword'>if</span> (!hit_cache) {</td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> g_object_unref (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> bg-&gt;pixbuf_cache = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> <span class='keyword'>if</span> (!hit_cache &amp;&amp; bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> bg-&gt;file_mtime = get_mtime (bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> bg-&gt;pixbuf_cache = get_as_pixbuf_for_size (bg, bg-&gt;filename, monitor,</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> time_until_next_change = <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;pixbuf_cache) {</td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> SlideShow *show = get_as_slideshow (bg, bg-&gt;filename);</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> <span class='keyword'>if</span> (show) {</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> <span class='keyword'>double</span> alpha;</td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> <span class='keyword'>double</span> timeout;</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> Slide *slide;</td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> slideshow_ref (show);</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> slide = get_current_slide (show, &amp;alpha);</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> timeout = get_slide_timeout (slide);</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> time_until_next_change = (guint) timeout;</td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> <span class='keyword'>if</span> (slide-&gt;fixed) {</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> FileSize *size = find_best_size (slide-&gt;file1,</td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> bg-&gt;pixbuf_cache =</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> get_as_pixbuf_for_size (bg, size-&gt;file, monitor,</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> FileSize *size;</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> GdkPixbuf *p1, *p2;</td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line"> size = find_best_size (slide-&gt;file1,</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"> p1 = get_as_pixbuf_for_size (bg, size-&gt;file, monitor,</td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> size = find_best_size (slide-&gt;file2,</td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> p2 = get_as_pixbuf_for_size (bg, size-&gt;file, monitor,</td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> best_width, best_height);</td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> <span class='keyword'>if</span> (p1 &amp;&amp; p2)</td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> bg-&gt;pixbuf_cache = blend (p1, p2, alpha);</td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> <span class='keyword'>if</span> (p1)</td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> g_object_unref (p1);</td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> <span class='keyword'>if</span> (p2)</td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line"> g_object_unref (p2);</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> ensure_timeout (bg, slide);</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"> <span class='comment'>/* If the next slideshow step is a long time away then</span></td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line"> <span class='comment'>we blow away the expensive stuff (large pixbufs) from</span></td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> <span class='comment'>the cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line"> <span class='keyword'>if</span> (time_until_next_change &gt; <span class='macro'>KEEP_EXPENSIVE_CACHE_SECS<span class='macro_popup'>60</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> blow_expensive_caches_in_idle (bg);</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;pixbuf_cache)</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> <span class='macro'>g_object_ref (bg-&gt;pixbuf_cache)<span class='macro_popup'>((__typeof__ (bg-&gt;pixbuf_cache)) (g_object_ref) (bg-&gt;pixbuf_cache<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='keyword'>return</span> bg-&gt;pixbuf_cache;</td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line">is_different (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> <span class='keyword'>if</span> (!filename &amp;&amp; bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (filename &amp;&amp; !bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!filename &amp;&amp; !bg-&gt;filename) {</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> <span class='keyword'>if</span> (get_mtime (filename) != bg-&gt;file_mtime)</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>if</span> (strcmp (filename, bg-&gt;filename) != 0)</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line">clear_cache (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> GList *list;</td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;file_cache) {</td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> <span class='keyword'>for</span> (list = bg-&gt;file_cache; list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; list = list-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> FileCacheEntry *ent = list-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> file_cache_entry_delete (ent);</td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line"> g_list_free (bg-&gt;file_cache);</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line"> bg-&gt;file_cache = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;pixbuf_cache) {</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> g_object_unref (bg-&gt;pixbuf_cache);</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> bg-&gt;pixbuf_cache = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;timeout_id) {</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> g_source_remove (bg-&gt;timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> bg-&gt;timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"><span class='comment'>/* Pixbuf utilities */</span></td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line">pixbuf_average_value (GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> GdkRGBA *result)</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> guint64 a_total, r_total, g_total, b_total;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> guint row, column;</td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> <span class='keyword'>int</span> row_stride;</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> <span class='keyword'>const</span> guchar *pixels, *p;</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> <span class='keyword'>int</span> r, g, b, a;</td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> guint64 dividend;</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line"> guint width, height;</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> gdouble dd;</td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> width = gdk_pixbuf_get_width (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> height = gdk_pixbuf_get_height (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> row_stride = gdk_pixbuf_get_rowstride (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> pixels = gdk_pixbuf_get_pixels (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> <span class='comment'>/* iterate through the pixbuf, counting up each component */</span></td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> a_total = 0;</td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> r_total = 0;</td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> g_total = 0;</td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> b_total = 0;</td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> <span class='keyword'>if</span> (gdk_pixbuf_get_has_alpha (pixbuf)) {</td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"> <span class='keyword'>for</span> (row = 0; row &lt; height; row++) {</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line"> p = pixels + (row * row_stride);</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='keyword'>for</span> (column = 0; column &lt; width; column++) {</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> r = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> g = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line"> b = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> a = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> a_total += a;</td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> r_total += r * a;</td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> g_total += g * a;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> b_total += b * a;</td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> dividend = height * width * 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> a_total *= 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> <span class='keyword'>for</span> (row = 0; row &lt; height; row++) {</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> p = pixels + (row * row_stride);</td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> <span class='keyword'>for</span> (column = 0; column &lt; width; column++) {</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> r = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> g = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> b = *p++;</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> r_total += r;</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> g_total += g;</td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"> b_total += b;</td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> dividend = height * width;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> a_total = dividend * 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> dd = dividend * 0xFF;</td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> result-&gt;alpha = a_total / dd;</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> result-&gt;red = r_total / dd;</td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> result-&gt;green = g_total / dd;</td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> result-&gt;blue = b_total / dd;</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line">pixbuf_scale_to_fit (GdkPixbuf *src, <span class='keyword'>int</span> max_width, <span class='keyword'>int</span> max_height)</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> <span class='keyword'>double</span> factor;</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> <span class='keyword'>int</span> src_width, src_height;</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> <span class='keyword'>int</span> new_width, new_height;</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> src_width = gdk_pixbuf_get_width (src);</td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> src_height = gdk_pixbuf_get_height (src);</td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> factor = <span class='macro'>MIN (max_width / (<span class='keyword'>double</span>) src_width, max_height / (<span class='keyword'>double</span>) src_height)<span class='macro_popup'>(((max_width / (double) src_width) &lt; (max_height / (double<br>) src_height)) ? (max_width / (double) src_width) : (max_height<br> / (double) src_height))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> new_width = floor (src_width * factor + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"> new_height = floor (src_height * factor + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='keyword'>return</span> gdk_pixbuf_scale_simple (src, new_width, new_height, GDK_INTERP_BILINEAR);</td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line">pixbuf_scale_to_min (GdkPixbuf *src, <span class='keyword'>int</span> min_width, <span class='keyword'>int</span> min_height)</td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> <span class='keyword'>double</span> factor;</td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='keyword'>int</span> src_width, src_height;</td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='keyword'>int</span> new_width, new_height;</td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"> GdkPixbuf *dest;</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> src_width = gdk_pixbuf_get_width (src);</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line"> src_height = gdk_pixbuf_get_height (src);</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> factor = <span class='macro'>MAX (min_width / (<span class='keyword'>double</span>) src_width, min_height / (<span class='keyword'>double</span>) src_height)<span class='macro_popup'>(((min_width / (double) src_width) &gt; (min_height / (double<br>) src_height)) ? (min_width / (double) src_width) : (min_height<br> / (double) src_height))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> new_width = floor (src_width * factor + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> new_height = floor (src_height * factor + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB,</td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> gdk_pixbuf_get_has_alpha (src),</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> 8, min_width, min_height);</td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>if</span> (!dest)</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line"> <span class='comment'>/* crop the result */</span></td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> gdk_pixbuf_scale (src, dest,</td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"> 0, 0,</td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> min_width, min_height,</td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> (new_width - min_width) / -2,</td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> (new_height - min_height) / -2,</td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> factor,</td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> factor,</td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> GDK_INTERP_BILINEAR);</td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"> <span class='keyword'>return</span> dest;</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"><span class='keyword'>static</span> guchar *</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line">create_gradient (<span class='keyword'>const</span> GdkRGBA *primary,</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> <span class='keyword'>const</span> GdkRGBA *secondary,</td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>int</span> n_pixels)</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> guchar *result = g_malloc (n_pixels * 3);</td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_pixels; ++i) {</td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> <span class='keyword'>double</span> ratio = (i + 0.5) / n_pixels;</td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> result[3 * i + 0] = (guchar) ((primary-&gt;red * (1 - ratio) + secondary-&gt;red * ratio) * 0x100);</td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> result[3 * i + 1] = (guchar) ((primary-&gt;green * (1 - ratio) + secondary-&gt;green * ratio) * 0x100);</td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"> result[3 * i + 2] = (guchar) ((primary-&gt;blue * (1 - ratio) + secondary-&gt;blue * ratio) * 0x100);</td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line">pixbuf_draw_gradient (GdkPixbuf *pixbuf,</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> gboolean horizontal,</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> GdkRGBA *primary,</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> GdkRGBA *secondary,</td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> GdkRectangle *rect)</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> <span class='keyword'>int</span> width;</td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> <span class='keyword'>int</span> height;</td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> <span class='keyword'>int</span> rowstride;</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> guchar *dst;</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> <span class='keyword'>int</span> n_channels = 3;</td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> rowstride = gdk_pixbuf_get_rowstride (pixbuf);</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> width = rect-&gt;width;</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> height = rect-&gt;height;</td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> dst = gdk_pixbuf_get_pixels (pixbuf) + rect-&gt;x * n_channels + rowstride * rect-&gt;y;</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> <span class='keyword'>if</span> (horizontal) {</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> guchar *gradient = create_gradient (primary, secondary, width);</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> <span class='keyword'>int</span> copy_bytes_per_row = width * n_channels;</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; height; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> guchar *d;</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> d = dst + rowstride * i;</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> memcpy (d, gradient, copy_bytes_per_row);</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> g_free (gradient);</td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> guchar *gb, *gradient;</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> gradient = create_gradient (primary, secondary, height);</td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; height; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line"> <span class='keyword'>int</span> j;</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> guchar *d;</td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> d = dst + rowstride * i;</td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> gb = gradient + n_channels * i;</td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> <span class='keyword'>for</span> (j = width; j &gt; 0; j--) {</td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='keyword'>int</span> k;</td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='keyword'>for</span> (k = 0; k &lt; n_channels; k++) {</td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"> *(d++) = gb[k];</td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> g_free (gradient);</td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line">pixbuf_blend (GdkPixbuf *src,</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> GdkPixbuf *dest,</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> <span class='keyword'>int</span> src_x,</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> <span class='keyword'>int</span> src_y,</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> <span class='keyword'>int</span> src_width,</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line"> <span class='keyword'>int</span> src_height,</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> <span class='keyword'>int</span> dest_x,</td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"> <span class='keyword'>int</span> dest_y,</td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line"> <span class='keyword'>double</span> alpha)</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> <span class='keyword'>int</span> dest_width = gdk_pixbuf_get_width (dest);</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='keyword'>int</span> dest_height = gdk_pixbuf_get_height (dest);</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> <span class='keyword'>int</span> offset_x = dest_x - src_x;</td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='keyword'>int</span> offset_y = dest_y - src_y;</td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> <span class='keyword'>if</span> (src_width &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> src_width = gdk_pixbuf_get_width (src);</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> <span class='keyword'>if</span> (src_height &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> src_height = gdk_pixbuf_get_height (src);</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> <span class='keyword'>if</span> (dest_x &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line"> dest_x = 0;</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"> <span class='keyword'>if</span> (dest_y &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> dest_y = 0;</td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> <span class='keyword'>if</span> (dest_x + src_width &gt; dest_width) {</td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line"> src_width = dest_width - dest_x;</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line"> <span class='keyword'>if</span> (dest_y + src_height &gt; dest_height) {</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> src_height = dest_height - dest_y;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> gdk_pixbuf_composite (src, dest,</td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> dest_x, dest_y,</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line"> src_width, src_height,</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> offset_x, offset_y,</td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"> 1, 1, GDK_INTERP_NEAREST,</td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> alpha * 0xFF + 0.5);</td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line">pixbuf_tile (GdkPixbuf *src, GdkPixbuf *dest)</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> <span class='keyword'>int</span> x, y;</td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='keyword'>int</span> tile_width, tile_height;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line"> <span class='keyword'>int</span> dest_width = gdk_pixbuf_get_width (dest);</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> <span class='keyword'>int</span> dest_height = gdk_pixbuf_get_height (dest);</td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line"> tile_width = gdk_pixbuf_get_width (src);</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> tile_height = gdk_pixbuf_get_height (src);</td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line"> <span class='keyword'>for</span> (y = 0; y &lt; dest_height; y += tile_height) {</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='keyword'>for</span> (x = 0; x &lt; dest_width; x += tile_width) {</td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> pixbuf_blend (src, dest, 0, 0,</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line"> tile_width, tile_height, x, y, 1.0);</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"><span class='keyword'>static</span> gboolean stack_is (SlideShow *parser, <span class='keyword'>const</span> <span class='keyword'>char</span> *s1, ...);</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"><span class='comment'>/* Parser for fading background */</span></td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line">handle_start_element (GMarkupParseContext *context,</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> <span class='keyword'>const</span> gchar *name,</td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"> <span class='keyword'>const</span> gchar **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> <span class='keyword'>const</span> gchar **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"> GError **err)</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> SlideShow *parser = user_data;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> <span class='keyword'>if</span> (strcmp (name, <span class='string_literal'>"static"</span>) == 0 || strcmp (name, <span class='string_literal'>"transition"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> Slide *slide = <span class='macro'>g_new0 (Slide, 1)<span class='macro_popup'>((Slide *) g_malloc0_n ((1), sizeof (Slide)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> <span class='keyword'>if</span> (strcmp (name, <span class='string_literal'>"static"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"> slide-&gt;fixed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> g_queue_push_tail (parser-&gt;slides, slide);</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (name, <span class='string_literal'>"size"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> Slide *slide = parser-&gt;slides-&gt;tail-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> FileSize *size = <span class='macro'>g_new0 (FileSize, 1)<span class='macro_popup'>((FileSize *) g_malloc0_n ((1), sizeof (FileSize)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line"> <span class='keyword'>for</span> (i = 0; attr_names[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> <span class='keyword'>if</span> (strcmp (attr_names[i], <span class='string_literal'>"width"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"> size-&gt;width = atoi (attr_values[i]);</td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (strcmp (attr_names[i], <span class='string_literal'>"height"</span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> size-&gt;height = atoi (attr_values[i]);</td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> <span class='keyword'>if</span> (parser-&gt;stack-&gt;tail &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> (strcmp (parser-&gt;stack-&gt;tail-&gt;data, <span class='string_literal'>"file"</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> strcmp (parser-&gt;stack-&gt;tail-&gt;data, <span class='string_literal'>"from"</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> slide-&gt;file1 = g_slist_prepend (slide-&gt;file1, size);</td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (parser-&gt;stack-&gt;tail &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> strcmp (parser-&gt;stack-&gt;tail-&gt;data, <span class='string_literal'>"to"</span>) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> slide-&gt;file2 = g_slist_prepend (slide-&gt;file2, size);</td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"> g_free (size);</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> g_queue_push_tail (parser-&gt;stack, <span class='macro'>g_strdup (name)<span class='macro_popup'>g_strdup_inline (name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line">handle_end_element (GMarkupParseContext *context,</td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> <span class='keyword'>const</span> gchar *name,</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> GError **err)</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> SlideShow *parser = user_data;</td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> g_free (g_queue_pop_tail (parser-&gt;stack));</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">stack_is (SlideShow *parser,</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s1,</td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line"> ...)</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> GList *stack = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s;</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> GList *l1, *l2;</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> stack = g_list_prepend (stack, (gpointer)s1);</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> <span class='macro'>va_start (args, s1)<span class='macro_popup'>__builtin_va_start(args, s1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>const</span> <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, const char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>while</span> (s) {</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> stack = g_list_prepend (stack, (gpointer)s);</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> s = <span class='macro'>va_arg (args, <span class='keyword'>const</span> <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(args, const char *)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line"> l1 = stack;</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> l2 = parser-&gt;stack-&gt;head;</td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line"> <span class='keyword'>while</span> (l1 &amp;&amp; l2) {</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line"> <span class='keyword'>if</span> (strcmp (l1-&gt;data, l2-&gt;data) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> g_list_free (stack);</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> l1 = l1-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> l2 = l2-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> g_list_free (stack);</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> <span class='keyword'>return</span> (!l1 &amp;&amp; !l2);</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line">parse_int (<span class='keyword'>const</span> <span class='keyword'>char</span> *text)</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> <span class='keyword'>return</span> strtol (text, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line">handle_text (GMarkupParseContext *context,</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> <span class='keyword'>const</span> gchar *text,</td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> gsize text_len,</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> GError **err)</td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line"> SlideShow *parser = user_data;</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> FileSize *fs;</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line"> <span class='macro'>g_return_if_fail (parser != NULL)<span class='macro_popup'>do { if ((parser != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "parser != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line"> <span class='macro'>g_return_if_fail (parser-&gt;slides != NULL)<span class='macro_popup'>do { if ((parser-&gt;slides != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "parser-&gt;slides != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line"> Slide *slide = parser-&gt;slides-&gt;tail ? parser-&gt;slides-&gt;tail-&gt;data : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"year"</span>, <span class='string_literal'>"starttime"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line"> parser-&gt;start_tm.tm_year = parse_int (text) - 1900;</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"month"</span>, <span class='string_literal'>"starttime"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line"> parser-&gt;start_tm.tm_mon = parse_int (text) - 1;</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"day"</span>, <span class='string_literal'>"starttime"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> parser-&gt;start_tm.tm_mday = parse_int (text);</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"hour"</span>, <span class='string_literal'>"starttime"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> parser-&gt;start_tm.tm_hour = parse_int (text) - 1;</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"minute"</span>, <span class='string_literal'>"starttime"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> parser-&gt;start_tm.tm_min = parse_int (text);</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"second"</span>, <span class='string_literal'>"starttime"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> parser-&gt;start_tm.tm_sec = parse_int (text);</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"duration"</span>, <span class='string_literal'>"static"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"> stack_is (parser, <span class='string_literal'>"duration"</span>, <span class='string_literal'>"transition"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> <span class='macro'>g_return_if_fail (slide != NULL)<span class='macro_popup'>do { if ((slide != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "slide != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> slide-&gt;duration = g_strtod (text, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"> parser-&gt;total_duration += slide-&gt;duration;</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"file"</span>, <span class='string_literal'>"static"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line"> stack_is (parser, <span class='string_literal'>"from"</span>, <span class='string_literal'>"transition"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> <span class='macro'>g_return_if_fail (slide != NULL)<span class='macro_popup'>do { if ((slide != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "slide != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> <span class='keyword'>for</span> (i = 0; text[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>g_ascii_isspace (text[i])<span class='macro_popup'>((g_ascii_table[(guchar) (text[i])] &amp; G_ASCII_SPACE) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> <span class='keyword'>if</span> (text[i] == 0)</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> fs = <span class='macro'>g_new (FileSize, 1)<span class='macro_popup'>((FileSize *) g_malloc_n ((1), sizeof (FileSize)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> fs-&gt;width = -1;</td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> fs-&gt;height = -1;</td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> fs-&gt;file = <span class='macro'>g_strdup (text)<span class='macro_popup'>g_strdup_inline (text)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line"> slide-&gt;file1 = g_slist_prepend (slide-&gt;file1, fs);</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> <span class='keyword'>if</span> (slide-&gt;file1-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"> parser-&gt;has_multiple_sizes = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"size"</span>, <span class='string_literal'>"file"</span>, <span class='string_literal'>"static"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> stack_is (parser, <span class='string_literal'>"size"</span>, <span class='string_literal'>"from"</span>, <span class='string_literal'>"transition"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line"> <span class='macro'>g_return_if_fail (slide != NULL)<span class='macro_popup'>do { if ((slide != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "slide != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> fs = slide-&gt;file1-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> fs-&gt;file = <span class='macro'>g_strdup (text)<span class='macro_popup'>g_strdup_inline (text)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='keyword'>if</span> (slide-&gt;file1-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> parser-&gt;has_multiple_sizes = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"to"</span>, <span class='string_literal'>"transition"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> <span class='macro'>g_return_if_fail (slide != NULL)<span class='macro_popup'>do { if ((slide != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "slide != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> <span class='keyword'>for</span> (i = 0; text[i]; i++) {</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>g_ascii_isspace (text[i])<span class='macro_popup'>((g_ascii_table[(guchar) (text[i])] &amp; G_ASCII_SPACE) != 0<br>)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> <span class='keyword'>if</span> (text[i] == 0)</td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> fs = <span class='macro'>g_new (FileSize, 1)<span class='macro_popup'>((FileSize *) g_malloc_n ((1), sizeof (FileSize)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> fs-&gt;width = -1;</td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line"> fs-&gt;height = -1;</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line"> fs-&gt;file = <span class='macro'>g_strdup (text)<span class='macro_popup'>g_strdup_inline (text)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> slide-&gt;file2 = g_slist_prepend (slide-&gt;file2, fs);</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line"> <span class='keyword'>if</span> (slide-&gt;file2-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> parser-&gt;has_multiple_sizes = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (stack_is (parser, <span class='string_literal'>"size"</span>, <span class='string_literal'>"to"</span>, <span class='string_literal'>"transition"</span>, <span class='string_literal'>"background"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> <span class='macro'>g_return_if_fail (slide != NULL)<span class='macro_popup'>do { if ((slide != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "slide != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> fs = slide-&gt;file2-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> fs-&gt;file = <span class='macro'>g_strdup (text)<span class='macro_popup'>g_strdup_inline (text)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> <span class='keyword'>if</span> (slide-&gt;file2-&gt;next != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> parser-&gt;has_multiple_sizes = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"><span class='keyword'>static</span> SlideShow *</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line">slideshow_ref (SlideShow *show)</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line"> show-&gt;ref_count++;</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> <span class='keyword'>return</span> show;</td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line">slideshow_unref (SlideShow *show)</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> GList *list;</td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> GSList *slist;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> FileSize *size;</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> show-&gt;ref_count--;</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line"> <span class='keyword'>if</span> (show-&gt;ref_count &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line"> <span class='keyword'>for</span> (list = show-&gt;slides-&gt;head; list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; list = list-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> Slide *slide = list-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='keyword'>for</span> (slist = slide-&gt;file1; slist != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; slist = slist-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> size = slist-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> g_free (size-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line"> g_free (size);</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"> g_slist_free (slide-&gt;file1);</td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> <span class='keyword'>for</span> (slist = slide-&gt;file2; slist != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; slist = slist-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"> size = slist-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line"> g_free (size-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> g_free (size);</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> g_slist_free (slide-&gt;file2);</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> g_free (slide);</td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> g_queue_free (show-&gt;slides);</td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> g_queue_free_full (show-&gt;stack, g_free);</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> g_free (show);</td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line">dump_bg (SlideShow *show)</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"><span class='directive'>#if 0</span></td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> GList *list;</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> GSList *slist;</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>for</span> (list = show-&gt;slides-&gt;head; list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; list = list-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> Slide *slide = list-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> g_print (<span class='string_literal'>"\nSlide: %s\n"</span>, slide-&gt;fixed? <span class='string_literal'>"fixed"</span> : <span class='string_literal'>"transition"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> g_print (<span class='string_literal'>"duration: %f\n"</span>, slide-&gt;duration);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> g_print (<span class='string_literal'>"File1:\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> <span class='keyword'>for</span> (slist = slide-&gt;file1; slist != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; slist = slist-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> FileSize *size = slist-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> g_print (<span class='string_literal'>"\t%s (%dx%d)\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> size-&gt;file, size-&gt;width, size-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> g_print (<span class='string_literal'>"File2:\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line"> <span class='keyword'>for</span> (slist = slide-&gt;file2; slist != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; slist = slist-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> FileSize *size = slist-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"> g_print (<span class='string_literal'>"\t%s (%dx%d)\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> size-&gt;file, size-&gt;width, size-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line">threadsafe_localtime (time_t time, <span class='keyword'>struct</span> tm *tm)</td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> <span class='keyword'>struct</span> tm *res;</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>G_LOCK_DEFINE_STATIC (localtime_mutex)<span class='macro_popup'>static GMutex g__localtime_mutex_lock</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> <span class='macro'>G_LOCK (localtime_mutex)<span class='macro_popup'>g_mutex_lock (&amp;g__localtime_mutex_lock)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> res = localtime (&amp;time);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> <span class='keyword'>if</span> (tm) {</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> *tm = *res;</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='macro'>G_UNLOCK (localtime_mutex)<span class='macro_popup'>g_mutex_unlock (&amp;g__localtime_mutex_lock)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"><span id="start117"><span class='keyword'>static</span></span> SlideShow *</td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line">read_slideshow_file (<span class='keyword'>const</span> <span class='keyword'>char</span> *filename,</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line"> GError **err)</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line"> <span id="start116"><span id="end117">GMarkupParser</span></span> parser = {</td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line"> handle_start_element,</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line"> handle_end_element,</td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> handle_text,</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* passthrough */</span></td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='comment'>/* error */</span></td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='keyword'>char</span> *contents = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> gsize len;</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> SlideShow *show = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> GMarkupParseContext *context = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> time_t t;</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span id="start115"><span id="end116"><span class='keyword'>if</span></span></span> (<span id="start114"><span class="mrange"><span id="end115">!</span></span>filename</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Assuming 'filename' is non-null</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> <span id="start111"><span id="end112"><span id="start113"><span id="end114">file</span></span></span></span> = g_file_new_for_path (<span id="start112"><span id="end113">filename</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> <span id="start110"><span id="end111"><span class='keyword'>if</span></span></span> (<span id="start109"><span class="mrange"><span id="end110">!</span></span>g_file_load_contents (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;contents, &amp;len, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> <span id="start106"><span id="end107"><span id="start108"><span id="end109">g_object_unref</span></span></span></span> (<span id="start107"><span id="end108">file</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line"> show = <span class='macro'>g_new0 (SlideShow, 1)<span class='macro_popup'>((SlideShow *) g_malloc0_n ((1), sizeof (SlideShow)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> show-&gt;ref_count = 1;</td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"> threadsafe_localtime ((time_t)0, &amp;show-&gt;start_tm);</td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"> show-&gt;stack = g_queue_new ();</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line"> show-&gt;slides = g_queue_new ();</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> context = g_markup_parse_context_new (&amp;parser, 0, show, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> <span id="start105"><span id="end106"><span class='keyword'>if</span></span></span> (<span id="start104"><span class="mrange"><span id="end105">!</span></span>g_markup_parse_context_parse (context, contents, len, err)</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> show = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> <span id="start103"><span id="end104"><span class='keyword'>if</span></span></span> (<span id="start102"><span id="end103"><span class='variable'>show<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>13.1</div></td><td>'show' is non-null</td></tr></tbody></table></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span id="start101"><span id="end102"><span class='keyword'>if</span></span></span> (<span id="start99"><span class="mrange"><span id="end100">!</span></span>g_markup_parse_context_end_parse (<span id="start100"><span id="end101">context</span></span>, err)</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> show = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> <span id="start96"><span id="end97"><span id="start98"><span id="end99">g_markup_parse_context_free</span></span></span></span> (<span id="start97"><span id="end98">context</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span id="start95"><span id="end96"><span class='keyword'>if</span></span></span> (<span id="start94"><span id="end95"><span class='variable'>show<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>16.1</div></td><td>'show' is non-null</td></tr></tbody></table></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> <span id="start93"><span id="end94">guint</span></span> num_items;</td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> t = mktime (&amp;show-&gt;start_tm);</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> show-&gt;start_time = (<span class='keyword'>double</span>)t;</td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line"> dump_bg (show);</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> num_items = g_queue_get_length (show-&gt;slides);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> <span class='comment'>/* no slides, that's not a slideshow */</span></td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span id="start92"><span id="end93"><span class='keyword'>if</span></span></span> (<span id="start91"><span class="mrange"><span id="end92">num_items</span></span> == 0</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Assuming 'num_items' is not equal to 0</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> show = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> <span class='comment'>/* one slide, there's no transition */</span></td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> } <span class='keyword'>else</span> <span id="start90"><span id="end91"><span class='keyword'>if</span></span></span> (<span id="start89"><span class="mrange"><span id="end90">num_items</span></span> == 1</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgEvent" style="margin-left:28ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Assuming 'num_items' is not equal to 1</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgControl" style="margin-left:24ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> Slide *slide = show-&gt;slides-&gt;head-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> slide-&gt;duration = show-&gt;total_duration = <span class='macro'>G_MAXUINT<span class='macro_popup'>(2147483647 *2U +1U)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> <span id="start86"><span id="end87"><span id="start88"><span id="end89">g_free</span></span></span></span> (<span id="start87"><span id="end88">contents</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> <span id="end86"><span class='keyword'>return</span></span> show;</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"><span class='comment'>/* Thumbnail utilities */</span></td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"><span class='keyword'>static</span> GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line">create_thumbnail_for_filename (MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename)</td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> <span class='keyword'>char</span> *thumb;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> gint64 mtime;</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> GdkPixbuf *orig, *result = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> <span class='keyword'>char</span> *uri;</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> mtime = get_mtime (filename);</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> <span class='keyword'>if</span> (mtime == (gint64)-1)</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line"> uri = g_filename_to_uri (filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"> <span class='keyword'>if</span> (uri == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> thumb = mate_desktop_thumbnail_factory_lookup (factory, uri, mtime);</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> <span class='keyword'>if</span> (thumb) {</td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> result = gdk_pixbuf_new_from_file (thumb, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> g_free (thumb);</td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> orig = gdk_pixbuf_new_from_file (filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> <span class='keyword'>if</span> (orig) {</td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"> <span class='keyword'>int</span> orig_width = gdk_pixbuf_get_width (orig);</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> <span class='keyword'>int</span> orig_height = gdk_pixbuf_get_height (orig);</td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> result = pixbuf_scale_to_fit (orig, <span class='macro'>THUMBNAIL_SIZE<span class='macro_popup'>256</span></span>, <span class='macro'>THUMBNAIL_SIZE<span class='macro_popup'>256</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (result)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((result)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-thumbnail-height"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> g_strdup_printf (<span class='string_literal'>"%d"</span>, orig_height), g_free);</td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (result)<span class='macro_popup'>((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((result)), (((GType) ((20) &lt;&lt; (2))))))))</span></span>, <span class='string_literal'>"mate-thumbnail-width"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> g_strdup_printf (<span class='string_literal'>"%d"</span>, orig_width), g_free);</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> g_object_unref (orig);</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> mate_desktop_thumbnail_factory_save_thumbnail (factory, result, uri, mtime);</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> mate_desktop_thumbnail_factory_create_failed_thumbnail (factory, uri, mtime);</td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line">get_thumb_annotations (GdkPixbuf *thumb,</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> <span class='keyword'>int</span> *orig_width,</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> <span class='keyword'>int</span> *orig_height)</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line"> <span class='keyword'>char</span> *end;</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *wstr, *hstr;</td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line"> wstr = gdk_pixbuf_get_option (thumb, <span class='string_literal'>"tEXt::Thumb::Image::Width"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line"> hstr = gdk_pixbuf_get_option (thumb, <span class='string_literal'>"tEXt::Thumb::Image::Height"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> <span class='keyword'>if</span> (hstr &amp;&amp; wstr) {</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> *orig_width = strtol (wstr, &amp;end, 10);</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> <span class='keyword'>if</span> (*end != 0)</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> *orig_height = strtol (hstr, &amp;end, 10);</td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"> <span class='keyword'>if</span> (*end != 0)</td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line">slideshow_has_multiple_sizes (SlideShow *show)</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> <span class='keyword'>return</span> show-&gt;has_multiple_sizes;</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"> <span class='comment'>* Returns whether the background is a slideshow.</span></td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">mate_bg_changes_with_time (MateBG *bg)</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> SlideShow *show;</td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> <span class='macro'>g_return_val_if_fail (bg != NULL, FALSE)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> <span class='keyword'>if</span> (!bg-&gt;filename)</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span class='keyword'>if</span> ((show = get_as_slideshow (bg, bg-&gt;filename)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> gboolean result;</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> result = (g_queue_get_length (show-&gt;slides) &gt; 1) ? <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span> : <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> slideshow_unref (show);</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> <span class='comment'>* mate_bg_create_frame_thumbnail:</span></td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> <span class='comment'>* Creates a thumbnail for a certain frame, where 'frame' is somewhat</span></td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> <span class='comment'>* vaguely defined as 'suitable point to show while single-stepping</span></td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> <span class='comment'>* through the slideshow'.</span></td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> <span class='comment'>* Returns: (transfer full): the newly created thumbnail or</span></td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> <span class='comment'>* or NULL if frame_num is out of bounds.</span></td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line">GdkPixbuf *</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line">mate_bg_create_frame_thumbnail (MateBG *bg,</td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> MateDesktopThumbnailFactory *factory,</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> GdkScreen *screen,</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> <span class='keyword'>int</span> dest_width,</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> <span class='keyword'>int</span> dest_height,</td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> <span class='keyword'>int</span> frame_num)</td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line"> <span id="start127">SlideShow</span> *show;</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> GdkPixbuf *result;</td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"> GdkPixbuf *thumb;</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line"> <span class='keyword'>int</span> i, skipped;</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> <span id="start126"><span id="end127">gboolean</span></span> found;</td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> <span id="start125"><span class="mrange"><span id="end126"><span class='macro'>g_return_val_if_fail</span></span></span> (bg != NULL, FALSE)<span class='macro_popup'>do { if ((bg != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "bg != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'bg' is not equal to null</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> <span id="start77"><span id="end78"><span id="start124"><span id="end125">show</span></span></span></span> = <span id="start78"><span class="mrange"><span class="mrange"><span id="end123">get_as_slideshow</span></span> (<span id="start123"><span id="end124">bg</span></span>, bg-&gt;filename)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'get_as_slideshow'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path24" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Returning from 'get_as_slideshow'</td><td><div class="PathNav"><a href="#Path25" title="Next event (25)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> <span id="start76"><span id="end77"><span class='keyword'>if</span></span></span> (<span id="start75">!</span><span id="end76"><span class='variable'>show<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>24.1</div></td><td>'show' is non-null</td></tr></tbody></table></span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> <span id="start74"><span id="end75"><span class='keyword'>if</span></span></span> (<span id="start73"><span class="mrange"><span id="end74">frame_num</span></span> &lt; 0</span> || <span id="start72"><span class="mrange"><span id="end73">(</span></span>guint) frame_num &gt;= g_queue_get_length (show-&gt;slides)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path25" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">25</div></td><td><div class="PathNav"><a href="#Path24" title="Previous event (24)">&#x2190;</a></div></td><td>Assuming 'frame_num' is &gt;= 0</td><td><div class="PathNav"><a href="#Path26" title="Next event (26)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path26" class="msg msgEvent" style="margin-left:30ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">26</div></td><td><div class="PathNav"><a href="#Path25" title="Previous event (25)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path27" title="Next event (27)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path27" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">27</div></td><td><div class="PathNav"><a href="#Path26" title="Previous event (26)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path28" title="Next event (28)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> <span id="start71"><span id="end72">i</span></span> = 0;</td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> skipped = 0;</td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> found = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> <span id="start70"><span id="end71"><span class='keyword'>for</span></span></span> (l = show-&gt;slides-&gt;head; l; l = l-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path28" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">28</div></td><td><div class="PathNav"><a href="#Path27" title="Previous event (27)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path29" title="Next event (29)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span id="start67"><span id="end68"><span id="start69"><span id="end70">Slide</span></span></span></span> *slide = <span id="start68"><span id="end69">l</span></span>-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> <span id="start66"><span id="end67"><span class='keyword'>if</span></span></span> (<span id="start65"><span class="mrange"><span id="end66">!</span></span>slide-&gt;fixed</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path29" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">29</div></td><td><div class="PathNav"><a href="#Path28" title="Previous event (28)">&#x2190;</a></div></td><td>Assuming field 'fixed' is not equal to 0</td><td><div class="PathNav"><a href="#Path30" title="Next event (30)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path30" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">30</div></td><td><div class="PathNav"><a href="#Path29" title="Previous event (29)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path31" title="Next event (31)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> skipped++;</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span id="start64"><span id="end65"><span class='keyword'>if</span></span></span> (<span id="start63"><span class="mrange"><span id="end64">i</span></span> == frame_num</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path31" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">31</div></td><td><div class="PathNav"><a href="#Path30" title="Previous event (30)">&#x2190;</a></div></td><td>Assuming 'i' is equal to 'frame_num'</td><td><div class="PathNav"><a href="#Path32" title="Next event (32)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path32" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">32</div></td><td><div class="PathNav"><a href="#Path31" title="Previous event (31)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path33" title="Next event (33)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> <span id="start62"><span id="end63">found</span></span> = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> <span id="start61"><span id="end62"><span class='keyword'>break</span></span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line"> i++;</td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"> <span id="end61"><span class='keyword'>if</span></span> (!<span id="start60"><span class='variable'>found<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>33.1</div></td><td>'found' is 1</td></tr></tbody></table></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path33" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">33</div></td><td><div class="PathNav"><a href="#Path32" title="Previous event (32)">&#x2190;</a></div></td><td> Execution continues on line 3241</td><td><div class="PathNav"><a href="#Path34" title="Next event (34)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path34" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">34</div></td><td><div class="PathNav"><a href="#Path33" title="Previous event (33)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path35" title="Next event (35)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> <span id="start57"><span id="end58"><span id="start59"><span id="end60">result</span></span></span></span> = gdk_pixbuf_new (GDK_COLORSPACE_RGB, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 8, <span id="start58"><span id="end59">dest_width</span></span>, dest_height);</td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> <span id="start56"><span id="end57">draw_color</span></span> (bg, result);</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='keyword'>if</span> (bg-&gt;<span id="start55"><span id="end56"><span class='variable'>filename<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>34.1</div></td><td>Field 'filename' is non-null</td></tr></tbody></table></span></span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path35" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">35</div></td><td><div class="PathNav"><a href="#Path34" title="Previous event (34)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path36" title="Next event (36)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span id="start54"><span id="end55">thumb</span></span> = <span class="mrange"><span id="end53">create_img_thumbnail</span> (<span id="start53"><span id="end54">bg</span></span>, factory, screen,</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path36" class="msg msgEvent" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">36</div></td><td><div class="PathNav"><a href="#Path35" title="Previous event (35)">&#x2190;</a></div></td><td>Calling 'create_img_thumbnail'</td><td><div class="PathNav"><a href="#Path37" title="Next event (37)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> <span class="mrange">dest_width, dest_height,</td></tr></span>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> <span class="mrange">frame_num + skipped)</span>;</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='keyword'>if</span> (thumb) {</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> draw_image_for_thumb (bg, thumb, result);</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> g_object_unref (thumb);</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-f4adeb.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-f4adeb.html
new file mode 100644
index 0000000..5f400b1
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-f4adeb.html
@@ -0,0 +1,2013 @@
+<!doctype html>
+<html>
+<head>
+<title>mate-languages.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/mate-languages.c -->
+
+<!-- FILENAME mate-languages.c -->
+
+<!-- FUNCTIONNAME mate_get_country_from_locale -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT f4adeb9fcf57e4ddf575109b4f5ed8f9 -->
+
+<!-- BUGLINE 1244 -->
+
+<!-- BUGCOLUMN 17 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/mate-languages.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1244, column 17</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name mate-languages.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/startup-notification-1.0 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/sysprof-6 -D G_LOG_DOMAIN="MateDesktop" -D MATELOCALEDIR="/usr/share/locale" -D PNP_IDS="/usr/share/libmate-desktop/pnp.ids" -D ISO_CODES_PREFIX="/usr" -D PIC -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c mate-languages.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1244": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright 2008 Red Hat, Inc,</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* 2007 William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* along with this program; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* Written by : William Jon McCann &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Ray Strode &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;dirent.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;locale.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;sys/stat.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;glib/gstdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define MATE_DESKTOP_USE_UNSTABLE_API</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include "mate-languages.h"</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;langinfo.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#ifndef <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#define <span class='macro'>__LC_LAST<span class='macro_popup'>13</span></span> 13</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/xml/iso-codes"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/locale"</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _MateLocale {</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='keyword'>char</span> *id;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> <span class='keyword'>char</span> *language_code;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> <span class='keyword'>char</span> *territory_code;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='keyword'>char</span> *codeset;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='keyword'>char</span> *modifier;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line">} MateLocale;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_languages_map;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territories_map;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_available_locales_map;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_language_count_map;</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='keyword'>static</span> GHashTable *mate_territory_count_map;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> * construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier);</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>static</span> gboolean language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name);</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line">mate_locale_free (MateLocale *locale)</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>if</span> (locale == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> g_free (locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> g_free (locale-&gt;codeset);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> g_free (locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> g_free (locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> g_free (locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> g_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">normalize_codeset (<span class='keyword'>const</span> <span class='keyword'>char</span> *codeset)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>if</span> (codeset == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (codeset, <span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("UTF-8")) ==<br> 0)</span></span> ||</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='macro'>g_str_equal (codeset, <span class='string_literal'>"utf8"</span>)<span class='macro_popup'>(strcmp ((const char *) (codeset), (const char *) ("utf8")) ==<br> 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"UTF-8"</span>)<span class='macro_popup'>g_strdup_inline ("UTF-8")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='comment'>* mate_parse_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='comment'>* @language_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> <span class='comment'>* store the language code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='comment'>* @country_codep: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='comment'>* store the country code, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> <span class='comment'>* @codesetp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>* store the codeset, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='comment'>* @modifierp: (out) (allow-none) (transfer full): location to</span></td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> <span class='comment'>* store the modifier, or %NULL</span></td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='comment'>* Extracts the various components of a locale string of the form</span></td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]]. See</span></td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='comment'>* http://en.wikipedia.org/wiki/Locale.</span></td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> <span class='comment'>* Return value: %TRUE if parsing was successful.</span></td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line">mate_parse_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> <span class='keyword'>char</span> **language_codep,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>char</span> **country_codep,</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>char</span> **codesetp,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>char</span> **modifierp)</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>static</span> GRegex *re = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> GMatchInfo *match_info;</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gchar *normalized_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> gchar *normalized_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> gboolean retval;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> match_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> retval = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> re = g_regex_new (<span class='string_literal'>"^(?P&lt;language&gt;[^_.@[:space:]]+)"</span></td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='string_literal'>"(_(?P&lt;territory&gt;[[:upper:]]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='string_literal'>"(\\.(?P&lt;codeset&gt;[-_0-9a-zA-Z]+))?"</span></td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='string_literal'>"(@(?P&lt;modifier&gt;[[:ascii:]]+))?$"</span>,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> 0, 0, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (re == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> g_warning (<span class='string_literal'>"%s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='keyword'>if</span> (!g_regex_match (re, locale, 0, &amp;match_info) ||</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> g_match_info_is_partial_match (match_info)) {</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> g_warning (<span class='string_literal'>"locale '%s' isn't valid\n"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> res = g_match_info_matches (match_info);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> g_warning (<span class='string_literal'>"Unable to parse locale: %s"</span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> retval = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>if</span> (language_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> *language_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"language"</span>);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='keyword'>if</span> (country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> *country_codep = g_match_info_fetch_named (match_info, <span class='string_literal'>"territory"</span>);</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='keyword'>if</span> (*country_codep != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> *country_codep[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> g_free (*country_codep);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> *country_codep = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> *codesetp = g_match_info_fetch_named (match_info, <span class='string_literal'>"codeset"</span>);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (*codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> *codesetp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> *codesetp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='keyword'>if</span> (modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> *modifierp = g_match_info_fetch_named (match_info, <span class='string_literal'>"modifier"</span>);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (*modifierp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> *modifierp[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> g_free (*modifierp);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> *modifierp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>if</span> (codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; *codesetp != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> normalized_codeset = normalize_codeset (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> normalized_name = construct_language_name (language_codep ? *language_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> country_codep ? *country_codep : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> normalized_codeset,</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> modifierp ? *modifierp : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (language_name_is_valid (normalized_name)) {</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> g_free (*codesetp);</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> *codesetp = normalized_codeset;</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> g_free (normalized_codeset);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> g_free (normalized_name);</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> g_match_info_free (match_info);</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line">construct_language_name (<span class='keyword'>const</span> <span class='keyword'>char</span> *language,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory,</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *codeset,</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *modifier)</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='macro'>g_assert (language != NULL &amp;&amp; language[0] != 0)<span class='macro_popup'>do { if (language != ((void*)0) &amp;&amp; language[0] != 0) ;<br> else g_assertion_message_expr ("MateDesktop", "mate-languages.c"<br>, 230, ((const char*) (__func__)), "language != NULL &amp;&amp; language[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='macro'>g_assert (territory == NULL || territory[0] != 0)<span class='macro_popup'>do { if (territory == ((void*)0) || territory[0] != 0) ; else<br> g_assertion_message_expr ("MateDesktop", "mate-languages.c",<br> 231, ((const char*) (__func__)), "territory == NULL || territory[0] != 0"<br>); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='macro'>g_assert (codeset == NULL || codeset[0] != 0)<span class='macro_popup'>do { if (codeset == ((void*)0) || codeset[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 232, ((const char*) (__func__<br>)), "codeset == NULL || codeset[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='macro'>g_assert (modifier == NULL || modifier[0] != 0)<span class='macro_popup'>do { if (modifier == ((void*)0) || modifier[0] != 0) ; else g_assertion_message_expr<br> ("MateDesktop", "mate-languages.c", 233, ((const char*) (__func__<br>)), "modifier == NULL || modifier[0] != 0"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s%s%s%s%s%s%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> language,</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"_"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? territory : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"."</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? codeset : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? <span class='string_literal'>"@"</span> : <span class='string_literal'>""</span>,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> modifier != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>? modifier : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='comment'>* mate_normalize_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='comment'>* Gets the normalized locale string in the form</span></td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>* [language[_country][.codeset][@modifier]] for @name.</span></td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>* Return value: (transfer full): normalized locale string. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line">mate_normalize_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='keyword'>char</span> *normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> gboolean valid;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *modifier = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (locale[0] == '\0') {</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> valid = mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> &amp;codeset, &amp;modifier);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='keyword'>if</span> (!valid)</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> normalized_name = construct_language_name (language_code,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> territory_code,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> codeset, modifier);</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>return</span> normalized_name;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">language_name_is_valid (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name)</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gboolean is_valid;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>int</span> lc_type_id = <span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (lc_type_id, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (lc_type_id, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> is_valid = setlocale (lc_type_id, language_name) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> setlocale (lc_type_id, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>return</span> is_valid;</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">language_name_get_codeset_details (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='keyword'>char</span> **pcodeset,</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> gboolean *is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_CTYPE, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (0, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>if</span> (setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, language_name) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> codeset = nl_langinfo (<span class='macro'>CODESET<span class='macro_popup'>CODESET</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>if</span> (pcodeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> *pcodeset = <span class='macro'>g_strdup (codeset)<span class='macro_popup'>g_strdup_inline (codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>if</span> (is_utf8 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> codeset = normalize_codeset (codeset);</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> *is_utf8 = strcmp (codeset, <span class='string_literal'>"UTF-8"</span>) == 0;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> setlocale (<span class='macro'>LC_CTYPE<span class='macro_popup'>0</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line">locale_dir_has_mo_files (<span class='keyword'>const</span> gchar* path)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> GDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> has_translations = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> dir = g_dir_open (path, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>if</span> (dir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> name = g_dir_read_name (dir);</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>if</span> (name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_has_suffix (name, <span class='string_literal'>".mo"</span>)<span class='macro_popup'>(__builtin_constant_p (".mo")? __extension__ ({ const char * const<br> __str = (name); const char * const __suffix = (".mo"); gboolean<br> __result = (0); if (__str == ((void*)0) || __suffix == ((void<br>*)0)) __result = (g_str_has_suffix) (__str, __suffix); else {<br> const size_t __str_len = strlen (((__str) + !(__str))); const<br> size_t __suffix_len = strlen (((__suffix) + !(__suffix))); if<br> (__str_len &gt;= __suffix_len) __result = memcmp (__str + __str_len<br> - __suffix_len, ((__suffix) + !(__suffix)), __suffix_len) ==<br> 0; } __result; }) : (g_str_has_suffix) (name, ".mo") )</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> has_translations = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> } <span class='keyword'>while</span> (name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> g_dir_close (dir);</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='comment'>* mate_language_has_translations:</span></td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='comment'>* Returns %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='comment'>* Return value: %TRUE if there are translations for language @code.</span></td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line">mate_language_has_translations (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> gboolean has_translations;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> gchar *path;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>if</span> (!has_translations) {</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> *system_data_dirs;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='keyword'>int</span> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> system_data_dirs = g_get_system_data_dirs ();</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='keyword'>while</span> ((system_data_dirs[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) &amp;&amp; (has_translations == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> path = g_build_filename (system_data_dirs[i], <span class='string_literal'>"locale"</span>, code, <span class='string_literal'>"LC_MESSAGES"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> has_translations = locale_dir_has_mo_files (path);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='keyword'>return</span> has_translations;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">add_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *language_name,</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> gboolean utf8_only)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> MateLocale *old_locale;</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> gboolean is_utf8 = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> gboolean valid = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='macro'>g_return_val_if_fail (language_name != NULL, FALSE)<span class='macro_popup'>do { if ((language_name != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "language_name != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>g_return_val_if_fail (*language_name != '\0', FALSE)<span class='macro_popup'>do { if ((*language_name != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*language_name != '\\0'"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> language_name_get_codeset_details (language_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>if</span> (is_utf8) {</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='keyword'>if</span> (strchr (language_name, '.'))</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* If the locale name has no dot, assume that its</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span class='comment'>* encoding part is missing and try again after adding</span></td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='comment'>* ".UTF-8". This catches locale names like "de_DE".</span></td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> name = g_strdup_printf (<span class='string_literal'>"%s.UTF-8"</span>, language_name);</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> language_name_get_codeset_details (name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='keyword'>if</span> (!is_utf8)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> name = <span class='macro'>g_strdup (language_name)<span class='macro_popup'>g_strdup_inline (language_name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='keyword'>if</span> (!language_name_is_valid (name)) {</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it's invalid"</span>, name);</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> locale = <span class='macro'>g_new0 (MateLocale, 1)<span class='macro_popup'>((MateLocale *) g_malloc0_n ((1), sizeof (MateLocale)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> valid = mate_parse_locale (name,</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> &amp;locale-&gt;language_code,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> &amp;locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> &amp;locale-&gt;codeset,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> &amp;locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> <span class='keyword'>if</span> (!valid) {</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> locale-&gt;id = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> locale-&gt;name = construct_language_name (locale-&gt;language_code, locale-&gt;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> locale-&gt;codeset, locale-&gt;modifier);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='keyword'>if</span> (!mate_language_has_translations (locale-&gt;name) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> !mate_language_has_translations (locale-&gt;id) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> !mate_language_has_translations (locale-&gt;language_code) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> g_debug (<span class='string_literal'>"Ignoring '%s' as a locale, since it lacks translations"</span>, locale-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>if</span> (!utf8_only) {</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> g_free (locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> locale-&gt;id = <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> old_locale = g_hash_table_lookup (mate_available_locales_map, locale-&gt;id);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='keyword'>if</span> (old_locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> <span class='keyword'>if</span> (strlen (old_locale-&gt;name) &gt; strlen (locale-&gt;name)) {</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> mate_locale_free (locale);</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> g_hash_table_insert (mate_available_locales_map, <span class='macro'>g_strdup (locale-&gt;id)<span class='macro_popup'>g_strdup_inline (locale-&gt;id)</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line">select_dirs (<span class='keyword'>const</span> <span class='keyword'>struct</span> dirent *dirent)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>int</span> result = 0;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>if</span> (strcmp (dirent-&gt;d_name, <span class='string_literal'>"."</span>) != 0 &amp;&amp; strcmp (dirent-&gt;d_name, <span class='string_literal'>".."</span>) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> mode_t mode = 0;</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"><span class='directive'>#ifdef _DIRENT_HAVE_D_TYPE</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='keyword'>if</span> (dirent-&gt;d_type != <span class='macro'>DT_UNKNOWN<span class='macro_popup'>DT_UNKNOWN</span></span> &amp;&amp; dirent-&gt;d_type != <span class='macro'>DT_LNK<span class='macro_popup'>DT_LNK</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> mode = <span class='macro'>DTTOIF (dirent-&gt;d_type)<span class='macro_popup'>((dirent-&gt;d_type) &lt;&lt; 12)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> } <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>struct</span> stat st;</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> path = g_build_filename (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, dirent-&gt;d_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_stat<span class='macro_popup'>stat</span></span> (path, &amp;st) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> mode = st.st_mode;</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> result = <span class='macro'>S_ISDIR (mode)<span class='macro_popup'>((((mode)) &amp; 0170000) == (0040000))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line">collect_locales_from_directory (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='keyword'>struct</span> dirent **dirents;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>int</span> ndirents;</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>int</span> cnt;</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> ndirents = scandir (<span class='macro'>MATELOCALEDIR<span class='macro_popup'>"/usr/share/locale"</span></span>, &amp;dirents, select_dirs, alphasort);</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='keyword'>for</span> (cnt = 0; cnt &lt; ndirents; ++cnt) {</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>if</span> (add_locale (dirents[cnt]-&gt;d_name, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>if</span> (ndirents &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> free (dirents);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">collect_locales_from_localebin (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> gboolean found_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> <span class='keyword'>const</span> gchar *argv[] = { <span class='string_literal'>"locale"</span>, <span class='string_literal'>"-a"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> gchar **linep;</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>g_auto (GStrv)<span class='macro_popup'>__attribute__((cleanup(glib_auto_cleanup_GStrv))) GStrv</span></span> lines = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> gchar *output = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>if</span> (g_spawn_sync (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, (gchar **) argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> G_SPAWN_SEARCH_PATH|G_SPAWN_STDERR_TO_DEV_NULL,</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;output, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='macro'>g_return_val_if_fail (output != NULL, FALSE)<span class='macro_popup'>do { if ((output != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "output != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> lines = g_strsplit (output, <span class='string_literal'>"\n"</span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='keyword'>if</span> (lines) {</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> linep = lines;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>while</span> (*linep) {</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>if</span> (*linep[0] &amp;&amp; add_locale (*linep, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> found_locales = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> linep++;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='keyword'>return</span> found_locales;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">fill_count_map (GHashTable *count_map,</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>int</span> count;</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>if</span> (code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (count_map, code)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span> + 1;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> count = 1;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> g_hash_table_insert (count_map, <span class='macro'>g_strdup (code)<span class='macro_popup'>g_strdup_inline (code)</span></span>, <span class='macro'>GINT_TO_POINTER (count)<span class='macro_popup'>((gpointer) (glong) (count))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line">count_languages_and_territories (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> gpointer value;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> mate_language_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> mate_territory_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> MateLocale *locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> fill_count_map (mate_language_count_map, locale-&gt;language_code);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> fill_count_map (mate_territory_count_map, locale-&gt;territory_code);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">collect_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> gboolean found_localebin_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> gboolean found_dir_locales = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> mate_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) mate_locale_free);</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> found_localebin_locales = collect_locales_from_localebin ();</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> found_dir_locales = collect_locales_from_directory ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>if</span> (!(found_localebin_locales || found_dir_locales)) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_warning (<span class='string_literal'>"Could not read list of available locales from libc, "</span></td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='string_literal'>"guessing possible locales from available translations, "</span></td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='string_literal'>"but list may be incomplete!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> count_languages_and_territories ();</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">get_language_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (mate_language_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_language_count_map, language)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line">is_unique_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *language)</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> <span class='keyword'>return</span> get_language_count (language) == 1;</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line">get_territory_count (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gint count = 0;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gpointer pointer;</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='keyword'>if</span> (mate_territory_count_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>if</span> ((pointer = g_hash_table_lookup (mate_territory_count_map, territory)) != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> count = <span class='macro'>GPOINTER_TO_INT (pointer)<span class='macro_popup'>((gint) (glong) (pointer))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line">is_unique_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *territory)</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> <span class='keyword'>return</span> get_territory_count (territory) == 1;</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line">is_fallback_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *fallback_language_names[] = { <span class='string_literal'>"C"</span>, <span class='string_literal'>"POSIX"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> <span class='keyword'>for</span> (i = 0; fallback_language_names[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; i++) {</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>if</span> (strcmp (code, fallback_language_names[i]) == 0) {</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line">get_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 679, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Unspecified"</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_languages_map, code);</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">get_first_item_in_semicolon_list (<span class='keyword'>const</span> <span class='keyword'>char</span> *list)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='keyword'>char</span> **items;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>char</span> *item;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>/* Some entries in iso codes have multiple values, separated</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='comment'>* by semicolons. Not really sure which one to pick, so</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='comment'>* we just arbitrarily pick the first one.</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> items = g_strsplit (list, <span class='string_literal'>"; "</span>, 2);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> item = <span class='macro'>g_strdup (items[0])<span class='macro_popup'>g_strdup_inline (items[0])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> g_strfreev (items);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='keyword'>return</span> item;</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line">capitalize_utf8_string (<span class='keyword'>const</span> <span class='keyword'>char</span> *str)</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>char</span> first[8] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='keyword'>if</span> (!str)</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first);</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> g_strconcat (first, g_utf8_offset_to_pointer (str, 1), <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">get_translated_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *language;</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> language = get_language (code);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>if</span> (language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_name;</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='keyword'>if</span> (is_fallback_language (code)) {</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> name = <span class='macro'>g_strdup (_(<span class='string_literal'>"Unspecified"</span>))<span class='macro_popup'>g_strdup_inline (gettext ("Unspecified"))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> translated_name = dgettext (<span class='string_literal'>"iso_639"</span>, language);</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_name);</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line">get_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='macro'>g_assert (code != NULL)<span class='macro_popup'>do { if (code != ((void*)0)) ; else g_assertion_message_expr (<br>"MateDesktop", "mate-languages.c", 768, ((const char*) (__func__<br>)), "code != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> len = strlen (code);</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='keyword'>if</span> (len != 2 &amp;&amp; len != 3) {</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> name = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (mate_territories_map, code);</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">get_translated_territory (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *locale)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> <span class='keyword'>char</span> *name;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> territory = get_territory (code);</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='keyword'>if</span> (territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translated_territory;</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *old_locale = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *tmp = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> old_locale = <span class='macro'>g_strdup (setlocale (LC_MESSAGES, NULL))<span class='macro_popup'>g_strdup_inline (setlocale (5, ((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, locale);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> translated_territory = dgettext (<span class='string_literal'>"iso_3166"</span>, territory);</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> tmp = get_first_item_in_semicolon_list (translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> name = capitalize_utf8_string (tmp);</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='keyword'>if</span> (locale != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> setlocale (<span class='macro'>LC_MESSAGES<span class='macro_popup'>5</span></span>, old_locale);</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line">languages_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longB;</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_longT;</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode;</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ccode_id;</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *lang_name;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>if</span> (! (<span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_entry"<br>)) == 0)</span></span> || <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_639_3_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_639_3_entry"<br>)) == 0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> ccode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> ccode_longB = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> ccode_longT = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> ccode_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> lang_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_1_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_1_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> ccode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2B_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2B_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> ccode_longB = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"iso_639_2T_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("iso_639_2T_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> ccode_longT = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"id"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("id"))<br> == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2 &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> ccode_id = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> lang_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='keyword'>if</span> (lang_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='keyword'>if</span> (ccode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> <span class='macro'>g_strdup (ccode)<span class='macro_popup'>g_strdup_inline (ccode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (ccode_longB != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='macro'>g_strdup (ccode_longB)<span class='macro_popup'>g_strdup_inline (ccode_longB)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='keyword'>if</span> (ccode_longT != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='macro'>g_strdup (ccode_longT)<span class='macro_popup'>g_strdup_inline (ccode_longT)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='keyword'>if</span> (ccode_id != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> g_hash_table_insert (mate_languages_map,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='macro'>g_strdup (ccode_id)<span class='macro_popup'>g_strdup_inline (ccode_id)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='macro'>g_strdup (lang_name)<span class='macro_popup'>g_strdup_inline (lang_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">territories_parse_start_tag (GMarkupParseContext *ctx,</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *element_name,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_names,</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **attr_values,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> gpointer user_data,</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_2;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *acode_3;</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *ncode;</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *territory_name;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> <span class='keyword'>if</span> (! <span class='macro'>g_str_equal (element_name, <span class='string_literal'>"iso_3166_entry"</span>)<span class='macro_popup'>(strcmp ((const char *) (element_name), (const char *) ("iso_3166_entry"<br>)) == 0)</span></span> || attr_names == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || attr_values == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> acode_2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> acode_3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> ncode = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> territory_common_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> territory_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> <span class='keyword'>while</span> (*attr_names &amp;&amp; *attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_2_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_2_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 2) {</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> acode_2 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"alpha_3_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("alpha_3_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> acode_3 = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"numeric_code"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("numeric_code"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>if</span> (strlen (*attr_values) != 3) {</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> ncode = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"common_name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("common_name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='comment'>/* skip if empty */</span></td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='keyword'>if</span> (**attr_values) {</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> territory_common_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>g_str_equal (*attr_names, <span class='string_literal'>"name"</span>)<span class='macro_popup'>(strcmp ((const char *) (*attr_names), (const char *) ("name"<br>)) == 0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> territory_name = *attr_values;</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> ++attr_names;</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> ++attr_values;</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> <span class='keyword'>if</span> (territory_common_name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> territory_name = territory_common_name;</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> <span class='keyword'>if</span> (territory_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> <span class='keyword'>if</span> (acode_2 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> <span class='macro'>g_strdup (acode_2)<span class='macro_popup'>g_strdup_inline (acode_2)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> <span class='keyword'>if</span> (acode_3 != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> <span class='macro'>g_strdup (acode_3)<span class='macro_popup'>g_strdup_inline (acode_3)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> <span class='keyword'>if</span> (ncode != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> g_hash_table_insert (mate_territories_map,</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> <span class='macro'>g_strdup (ncode)<span class='macro_popup'>g_strdup_inline (ncode)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> <span class='macro'>g_strdup (territory_name)<span class='macro_popup'>g_strdup_inline (territory_name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line">languages_variant_init (<span class='keyword'>const</span> <span class='keyword'>char</span> *variant)</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> bindtextdomain (variant, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> bind_textdomain_codeset (variant, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filename = g_strdup_printf (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/%s.xml"</span>, variant);</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> res = g_file_get_contents (filename,</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> GMarkupParser parser = { languages_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> filename,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line">languages_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='keyword'>if</span> (mate_languages_map)</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> mate_languages_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> languages_variant_init (<span class='string_literal'>"iso_639_3"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line">territories_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> gboolean res;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> gsize buf_len;</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *buf = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> <span class='macro'>g_autoptr (GError)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GError))) GError_autoptr</span></span> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='keyword'>if</span> (mate_territories_map)</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> bindtextdomain (<span class='string_literal'>"iso_3166"</span>, <span class='macro'>ISO_CODES_LOCALESDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> bind_textdomain_codeset (<span class='string_literal'>"iso_3166"</span>, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> mate_territories_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> res = g_file_get_contents (<span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> &amp;buf,</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> &amp;buf_len,</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (res) {</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> <span class='macro'>g_autoptr (GMarkupParseContext)<span class='macro_popup'>__attribute__((cleanup(glib_autoptr_cleanup_GMarkupParseContext<br>))) GMarkupParseContext_autoptr</span></span> ctx = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> GMarkupParser parser = { territories_parse_start_tag, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> };</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> ctx = g_markup_parse_context_new (&amp;parser, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> res = g_markup_parse_context_parse (ctx, buf, buf_len, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> <span class='keyword'>if</span> (! res) {</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> g_warning (<span class='string_literal'>"Failed to parse '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load '%s': %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='macro'>ISO_CODES_DATADIR<span class='macro_popup'>"/usr" "/share/xml/iso-codes"</span></span> <span class='string_literal'>"/iso_3166.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>* mate_get_language_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>* Gets the language description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line">mate_get_language_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> GString *full_language;</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> full_language = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> <span class='keyword'>if</span> (language_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> <span class='keyword'>if</span> (translated_language == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> full_language = <span class='macro'>g_string_append (full_language, translated_language)<span class='macro_popup'>(__builtin_constant_p (translated_language) ? __extension__ (<br>{ const char * const __val = (translated_language); g_string_append_len_inline<br> (full_language, __val, (__val != ((void*)0)) ? (gssize) strlen<br> (((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_language, translated_language, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> <span class='keyword'>if</span> (is_unique_language (language_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> <span class='keyword'>if</span> (territory_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> <span class='keyword'>if</span> (translated_territory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> translated_territory);</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> language_name_get_codeset_details (locale, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> g_string_append_printf (full_language,</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='keyword'>if</span> (full_language-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='macro'>g_string_free (full_language, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_language), ((!(0)))) : g_string_free_and_steal (full_language<br>)) : (g_string_free) ((full_language), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_language, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_language<br>), ((0))) : g_string_free_and_steal (full_language)) : (g_string_free<br>) ((full_language), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='comment'>* mate_get_country_from_locale:</span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='comment'>* @locale: a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='comment'>* Gets the country description for @locale. If @translation is</span></td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> <span class='comment'>* provided the returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country description. Caller</span></td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>* takes ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line">mate_get_country_from_locale (<span class='keyword'>const</span> <span class='keyword'>char</span> *locale,</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> GString *full_name;</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *language_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *territory_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *codeset_code = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *langinfo_codeset = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_language = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='macro'>g_autofree<span class='macro_popup'>__attribute__((cleanup(g_autoptr_cleanup_generic_gfree)))</span></span> <span class='keyword'>char</span> *translated_territory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> gboolean is_utf8 = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='macro'>g_return_val_if_fail (locale != NULL, NULL)<span class='macro_popup'>do { if ((locale != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "locale != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> <span class='macro'>g_return_val_if_fail (*locale != '\0', NULL)<span class='macro_popup'>do { if ((*locale != '\0')) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "*locale != '\\0'"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> full_name = g_string_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> mate_parse_locale (locale,</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> &amp;language_code,</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> &amp;territory_code,</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> &amp;codeset_code,</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> <span class='keyword'>if</span> (territory_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> translated_territory = get_translated_territory (territory_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='macro'>g_string_append (full_name, translated_territory)<span class='macro_popup'>(__builtin_constant_p (translated_territory) ? __extension__ (<br>{ const char * const __val = (translated_territory); g_string_append_len_inline<br> (full_name, __val, (__val != ((void*)0)) ? (gssize) strlen (<br>((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (full_name, translated_territory, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (is_unique_territory (territory_code)) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='keyword'>if</span> (language_code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> translated_language = get_translated_language (language_code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>if</span> (translated_language != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> <span class='string_literal'>" (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> translated_language);</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> language_name_get_codeset_details (translation, &amp;langinfo_codeset, &amp;is_utf8);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> <span class='keyword'>if</span> (codeset_code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; langinfo_codeset != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> codeset_code = <span class='macro'>g_strdup (langinfo_codeset)<span class='macro_popup'>g_strdup_inline (langinfo_codeset)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (!is_utf8 &amp;&amp; codeset_code) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> g_string_append_printf (full_name,</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> <span class='string_literal'>" [%s]"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> codeset_code);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> out:</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>if</span> (full_name-&gt;len == 0) {</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class="mrange"><span class='macro'>g_string_free</span> (full_name, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(full_name), ((!(0)))) : g_string_free_and_steal (full_name))<br> : (g_string_free) ((full_name), ((!(0)))))</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:17ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (full_name, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((full_name<br>), ((0))) : g_string_free_and_steal (full_name)) : (g_string_free<br>) ((full_name), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='comment'>* mate_get_all_locales:</span></td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> <span class='comment'>* Gets all locales.</span></td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> <span class='comment'>* Return value: (array zero-terminated=1) (element-type utf8) (transfer full):</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='comment'>* a newly allocated %NULL-terminated string array containing the</span></td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='comment'>* all locales. Free with g_strfreev().</span></td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>char</span> **</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">mate_get_all_locales (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> GHashTableIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> gpointer key, value;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> GPtrArray *array;</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='keyword'>if</span> (mate_available_locales_map == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> collect_locales ();</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> array = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> g_hash_table_iter_init (&amp;iter, mate_available_locales_map);</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> <span class='keyword'>while</span> (g_hash_table_iter_next (&amp;iter, &amp;key, &amp;value)) {</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> MateLocale *locale;</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> locale = (MateLocale *) value;</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> g_ptr_array_add (array, <span class='macro'>g_strdup (locale-&gt;name)<span class='macro_popup'>g_strdup_inline (locale-&gt;name)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> g_ptr_array_add (array, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> <span class='keyword'>return</span> (<span class='keyword'>char</span> **) g_ptr_array_free (array, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> <span class='comment'>* mate_get_language_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='comment'>* @code: an ISO 639 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='comment'>* Gets the language name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='comment'>* Return value: (transfer full): the language name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line">mate_get_language_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> languages_init ();</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> get_translated_language (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> <span class='comment'>* mate_get_country_from_code:</span></td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> <span class='comment'>* @code: an ISO 3166 code string</span></td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> <span class='comment'>* @translation: (allow-none): a locale string</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> <span class='comment'>* Gets the country name for @code. If @locale is provided the</span></td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='comment'>* returned string is translated accordingly.</span></td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> <span class='comment'>* Return value: (transfer full): the country name. Caller takes</span></td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='comment'>* ownership.</span></td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> <span class='comment'>* Since: 1.22</span></td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"><span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line">mate_get_country_from_code (<span class='keyword'>const</span> <span class='keyword'>char</span> *code,</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *translation)</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>g_return_val_if_fail (code != NULL, NULL)<span class='macro_popup'>do { if ((code != ((void*)0))) { } else { g_return_if_fail_warning<br> ("MateDesktop", ((const char*) (__func__)), "code != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> territories_init ();</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> <span class='keyword'>return</span> get_translated_territory (code, translation);</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/report-fb6164.html b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-fb6164.html
new file mode 100644
index 0000000..38651ac
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/report-fb6164.html
@@ -0,0 +1,1437 @@
+<!doctype html>
+<html>
+<head>
+<title>/rootdir/libmate-desktop/tmp-introspecthjnu4i_a/MateDesktop-2.0.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC This statement is never executed -->
+
+<!-- BUGTYPE Unreachable code -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/libmate-desktop/tmp-introspecthjnu4i_a/MateDesktop-2.0.c -->
+
+<!-- FILENAME MateDesktop-2.0.c -->
+
+<!-- FUNCTIONNAME value_to_string -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT fb6164c030ad64bf87b67ba4bdb4d46c -->
+
+<!-- BUGLINE 181 -->
+
+<!-- BUGCOLUMN 11 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>libmate-desktop/tmp-introspecthjnu4i_a/MateDesktop-2.0.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 181, column 11</a><br />This statement is never executed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name MateDesktop-2.0.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model static -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/libmate-desktop -resource-dir /usr/bin/../lib/clang/17 -D MATE_DESKTOP_USE_UNSTABLE_API -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/cairo -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gio-unix-2.0 -I /usr/include/harfbuzz -I /usr/include/atk-1.0 -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/cloudproviders -I /usr/include/blkid -I /usr/include/libmount -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/fribidi -I /usr/include/sysprof-6 -I /usr/include/libpng16 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/cairo -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/atk-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/at-spi2-atk/2.0 -I /usr/include/cloudproviders -I /usr/include/at-spi-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/blkid -I /usr/include/pixman-1 -I /usr/include/libxml2 -I /usr/include/libmount -I /usr/include/fribidi -I /usr/include/libpng16 -I /usr/include/sysprof-6 -I /rootdir -internal-isystem /usr/bin/../lib/clang/17/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-deprecated-declarations -fdebug-compilation-dir=/rootdir/libmate-desktop -ferror-limit 19 -fgnuc-version=4.2.1 -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2024-03-11-212501-5924-1 -x c /rootdir/libmate-desktop/tmp-introspecthjnu4i_a/MateDesktop-2.0.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"181": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* This file is generated, do not edit */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"><span class='directive'>#undef <span class='macro'>GLIB_VERSION_MIN_REQUIRED<span class='macro_popup'>((((2) &lt;&lt; 16 | (78) &lt;&lt; 8)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"><span class='directive'>#undef <span class='macro'>GLIB_VERSION_MAX_ALLOWED<span class='macro_popup'>((((2) &lt;&lt; 16 | (78) &lt;&lt; 8)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"><span class='comment'>/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* GObject introspection: Dump introspection data</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* Copyright (C) 2008 Colin Walters &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* This library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* modify it under the terms of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* License as published by the Free Software Foundation; either</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* version 2 of the License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* This library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>* Lesser General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU Lesser General Public</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* License along with this library; if not, write to the</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>* Boston, MA 02111-1307, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;glib-object.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='comment'>/* This file is both compiled into libgirepository.so, and installed</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> <span class='comment'>* on the filesystem. But for the dumper, we want to avoid linking</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> <span class='comment'>* to libgirepository; see</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> <span class='comment'>* https://bugzilla.gnome.org/show_bug.cgi?id=630342</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#ifdef G_IREPOSITORY_COMPILATION</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#include "girepository.h"</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line">escaped_printf (GOutputStream *out, <span class='keyword'>const</span> <span class='keyword'>char</span> *fmt, ...) <span class='macro'>G_GNUC_PRINTF (2, 3)<span class='macro_popup'>__attribute__((__format__ (__printf__, 2, 3)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line">escaped_printf (GOutputStream *out, <span class='keyword'>const</span> <span class='keyword'>char</span> *fmt, ...)</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='keyword'>char</span> *str;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> va_list args;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> gsize written;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> <span class='macro'>va_start (args, fmt)<span class='macro_popup'>__builtin_va_start(args, fmt)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> str = g_markup_vprintf_escaped (fmt, args);</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>if</span> (!g_output_stream_write_all (out, str, strlen (str), &amp;written, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error))</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> g_critical (<span class='string_literal'>"failed to write to iochannel: %s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> g_clear_error (&amp;error);</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='macro'>va_end (args)<span class='macro_popup'>__builtin_va_end(args)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">goutput_write (GOutputStream *out, <span class='keyword'>const</span> <span class='keyword'>char</span> *str)</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> gsize written;</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> <span class='keyword'>if</span> (!g_output_stream_write_all (out, str, strlen (str), &amp;written, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error))</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> g_critical (<span class='string_literal'>"failed to write to iochannel: %s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> g_clear_error (&amp;error);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>typedef</span> GType (*GetTypeFunc)(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='keyword'>typedef</span> GQuark (*ErrorQuarkFunc)(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='keyword'>static</span> GType</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">invoke_get_type (GModule *self, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> GetTypeFunc sym;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GType ret;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>if</span> (!g_module_symbol (self, symbol, (<span class='keyword'>void</span>**)&amp;sym))</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> G_IO_ERROR_FAILED,</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> <span class='string_literal'>"Failed to find symbol '%s'"</span>, symbol);</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> ret = sym ();</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='keyword'>if</span> (ret == <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> G_IO_ERROR_FAILED,</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='string_literal'>"Function '%s' returned G_TYPE_INVALID"</span>, symbol);</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"><span class='keyword'>static</span> GQuark</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line">invoke_error_quark (GModule *self, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> ErrorQuarkFunc sym;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='keyword'>if</span> (!g_module_symbol (self, symbol, (<span class='keyword'>void</span>**)&amp;sym))</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> G_IO_ERROR_FAILED,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='string_literal'>"Failed to find symbol '%s'"</span>, symbol);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>return</span> sym ();</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line">value_transform_to_string (<span class='keyword'>const</span> GValue *value)</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> GValue tmp = <span class='macro'>G_VALUE_INIT<span class='macro_popup'>{ 0, { { 0 } } }</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='keyword'>char</span> *s = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> g_value_init (&amp;tmp, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>if</span> (g_value_transform (value, &amp;tmp))</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *str = g_value_get_string (&amp;tmp);</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (str != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> s = g_strescape (str, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> g_value_unset (&amp;tmp);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> <span class='keyword'>return</span> s;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"><span class='comment'>/* A simpler version of g_strdup_value_contents(), but with stable</span></td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span class='comment'>* output and less complex semantics</span></td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line">value_to_string (<span class='keyword'>const</span> GValue *value)</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='keyword'>if</span> (value == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_VALUE_HOLDS_STRING (value)<span class='macro_popup'>(((__extension__ ({ const GValue *__val = (const GValue*) ((value<br>)); GType __t = (((GType) ((16) &lt;&lt; (2)))); gboolean __r<br>; if (!__val) __r = (0); else if (__val-&gt;g_type == __t) __r<br> = (!(0)); else __r = g_type_check_value_holds (__val, __t); __r<br>; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *s = g_value_get_string (value);</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='keyword'>if</span> (s == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (<span class='string_literal'>"NULL"</span>)<span class='macro_popup'>g_strdup_inline ("NULL")</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>return</span> g_strescape (s, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> GType value_type = <span class='macro'>G_VALUE_TYPE (value)<span class='macro_popup'>(((GValue*) (value))-&gt;g_type)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span class='keyword'>switch</span> (<span class='macro'>G_TYPE_FUNDAMENTAL (value_type)<span class='macro_popup'>(g_type_fundamental (value_type))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_BOXED<span class='macro_popup'>((GType) ((18) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>if</span> (g_value_get_boxed (value) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='keyword'>return</span> value_transform_to_string (value);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class="mrange"><span class='keyword'>break</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:11ex">This statement is never executed</div></td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>if</span> (g_value_get_object (value) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>return</span> value_transform_to_string (value);</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_POINTER<span class='macro_popup'>((GType) ((17) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> <span class='keyword'>return</span> value_transform_to_string (value);</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line">dump_properties (GType type, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> guint n_properties;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> GParamSpec **props;</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_FUNDAMENTAL (type)<span class='macro_popup'>(g_type_fundamental (type))</span></span> == <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> GObjectClass *klass;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> klass = g_type_class_ref (type);</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> props = g_object_class_list_properties (klass, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='keyword'>void</span> *klass;</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> klass = g_type_default_interface_ref (type);</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> props = g_object_interface_list_properties (klass, &amp;n_properties);</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_properties; i++)</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> GParamSpec *prop;</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> prop = props[i];</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='keyword'>if</span> (prop-&gt;owner_type != type)</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='keyword'>const</span> GValue *v = g_param_spec_get_default_value (prop);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='keyword'>char</span> *default_value = value_to_string (v);</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='keyword'>if</span> (v != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; default_value != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;property name=\"%s\" type=\"%s\" flags=\"%d\" default-value=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> prop-&gt;name,</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> g_type_name (prop-&gt;value_type),</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> prop-&gt;flags,</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> default_value);</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;property name=\"%s\" type=\"%s\" flags=\"%d\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> prop-&gt;name,</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> g_type_name (prop-&gt;value_type),</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> prop-&gt;flags);</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> g_free (default_value);</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> g_free (props);</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line">dump_signals (GType type, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> guint n_sigs;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> guint *sig_ids;</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> sig_ids = g_signal_list_ids (type, &amp;n_sigs);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_sigs; i++)</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> guint sigid;</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> GSignalQuery query;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> guint j;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> sigid = sig_ids[i];</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> g_signal_query (sigid, &amp;query);</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;signal name=\"%s\" return=\"%s\""</span>,</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> query.signal_name, g_type_name (query.return_type));</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_RUN_FIRST)</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> escaped_printf (out, <span class='string_literal'>" when=\"first\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_RUN_LAST)</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> escaped_printf (out, <span class='string_literal'>" when=\"last\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_RUN_CLEANUP)</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> escaped_printf (out, <span class='string_literal'>" when=\"cleanup\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2, 29, 15)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (29)) || (2 == (2<br>) &amp;&amp; 78 == (29) &amp;&amp; 3 &gt;= (15)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_MUST_COLLECT)</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> escaped_printf (out, <span class='string_literal'>" when=\"must-collect\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_NO_RECURSE)</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> escaped_printf (out, <span class='string_literal'>" no-recurse=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_DETAILED)</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> escaped_printf (out, <span class='string_literal'>" detailed=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_ACTION)</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> escaped_printf (out, <span class='string_literal'>" action=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>if</span> (query.signal_flags &amp; G_SIGNAL_NO_HOOKS)</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> escaped_printf (out, <span class='string_literal'>" no-hooks=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> goutput_write (out, <span class='string_literal'>"&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='keyword'>for</span> (j = 0; j &lt; query.n_params; j++)</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;param type=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> g_type_name (query.param_types[j]));</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> goutput_write (out, <span class='string_literal'>" &lt;/signal&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> g_free (sig_ids);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line">dump_object_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> guint n_interfaces;</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> GType *interfaces;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;class name=\"%s\" get-type=\"%s\""</span>,</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> g_type_name (type), symbol);</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (type != <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> GString *parent_str;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> GType parent;</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> gboolean first = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> parent = g_type_parent (type);</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> parent_str = g_string_new (<span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> <span class='keyword'>while</span> (parent != <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>if</span> (first)</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> first = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> <span class='macro'>g_string_append_c (parent_str, ',')<span class='macro_popup'>g_string_append_c_inline (parent_str, ',')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='macro'>g_string_append (parent_str, g_type_name (parent))<span class='macro_popup'>(__builtin_constant_p (g_type_name (parent)) ? __extension__ (<br>{ const char * const __val = (g_type_name (parent)); g_string_append_len_inline<br> (parent_str, __val, (__val != ((void*)0)) ? (gssize) strlen (<br>((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (parent_str, g_type_name (parent), (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> parent = g_type_parent (parent);</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> escaped_printf (out, <span class='string_literal'>" parents=\"%s\""</span>, parent_str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>g_string_free (parent_str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(parent_str), ((!(0)))) : g_string_free_and_steal (parent_str<br>)) : (g_string_free) ((parent_str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_ABSTRACT (type)<span class='macro_popup'>(g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> escaped_printf (out, <span class='string_literal'>" abstract=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION (2, 70, 0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (70)) || (2 == (2<br>) &amp;&amp; 78 == (70) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_FINAL (type)<span class='macro_popup'>(g_type_test_flags ((type), G_TYPE_FLAG_FINAL))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> escaped_printf (out, <span class='string_literal'>" final=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> goutput_write (out, <span class='string_literal'>"&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> interfaces = g_type_interfaces (type, &amp;n_interfaces);</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_interfaces; i++)</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> GType itype = interfaces[i];</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;implements name=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> g_type_name (itype));</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> g_free (interfaces);</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> dump_properties (type, out);</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> dump_signals (type, out);</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> goutput_write (out, <span class='string_literal'>" &lt;/class&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line">dump_interface_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> guint n_interfaces;</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> GType *interfaces;</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;interface name=\"%s\" get-type=\"%s\"&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> g_type_name (type), symbol);</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> interfaces = g_type_interface_prerequisites (type, &amp;n_interfaces);</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_interfaces; i++)</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> GType itype = interfaces[i];</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='keyword'>if</span> (itype == <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='comment'>/* Treat this as implicit for now; in theory GInterfaces are</span></td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='comment'>* supported on things like GstMiniObject, but right now</span></td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='comment'>* the introspection system only supports GObject.</span></td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='comment'>* http://bugzilla.gnome.org/show_bug.cgi?id=559706</span></td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;prerequisite name=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> g_type_name (itype));</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> g_free (interfaces);</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> dump_properties (type, out);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> dump_signals (type, out);</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> goutput_write (out, <span class='string_literal'>" &lt;/interface&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line">dump_boxed_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;boxed name=\"%s\" get-type=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> g_type_name (type), symbol);</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line">dump_flags_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> GFlagsClass *klass;</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> klass = g_type_class_ref (type);</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;flags name=\"%s\" get-type=\"%s\"&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> g_type_name (type), symbol);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; klass-&gt;n_values; i++)</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> GFlagsValue *value = &amp;(klass-&gt;values[i]);</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;member name=\"%s\" nick=\"%s\" value=\"%u\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> value-&gt;value_name, value-&gt;value_nick, value-&gt;value);</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> goutput_write (out, <span class='string_literal'>" &lt;/flags&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">dump_enum_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> GEnumClass *klass;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> klass = g_type_class_ref (type);</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;enum name=\"%s\" get-type=\"%s\"&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> g_type_name (type), symbol);</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; klass-&gt;n_values; i++)</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> GEnumValue *value = &amp;(klass-&gt;values[i]);</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;member name=\"%s\" nick=\"%s\" value=\"%d\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> value-&gt;value_name, value-&gt;value_nick, value-&gt;value);</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> goutput_write (out, <span class='string_literal'>" &lt;/enum&gt;"</span>);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line">dump_fundamental_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> guint n_interfaces;</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> GType *interfaces;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> GString *parent_str;</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> GType parent;</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> gboolean first = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;fundamental name=\"%s\" get-type=\"%s\""</span>,</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> g_type_name (type), symbol);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_ABSTRACT (type)<span class='macro_popup'>(g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> escaped_printf (out, <span class='string_literal'>" abstract=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION (2, 70, 0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (70)) || (2 == (2<br>) &amp;&amp; 78 == (70) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_FINAL (type)<span class='macro_popup'>(g_type_test_flags ((type), G_TYPE_FLAG_FINAL))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> escaped_printf (out, <span class='string_literal'>" final=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_TYPE_IS_INSTANTIATABLE (type)<span class='macro_popup'>(g_type_test_flags ((type), G_TYPE_FLAG_INSTANTIATABLE))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> escaped_printf (out, <span class='string_literal'>" instantiatable=\"1\""</span>);</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> parent = g_type_parent (type);</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> parent_str = g_string_new (<span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>while</span> (parent != <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> <span class='keyword'>if</span> (first)</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> first = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='macro'>g_string_append_c (parent_str, ',')<span class='macro_popup'>g_string_append_c_inline (parent_str, ',')</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='keyword'>if</span> (!g_type_name (parent))</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> <span class='macro'>g_string_append (parent_str, g_type_name (parent))<span class='macro_popup'>(__builtin_constant_p (g_type_name (parent)) ? __extension__ (<br>{ const char * const __val = (g_type_name (parent)); g_string_append_len_inline<br> (parent_str, __val, (__val != ((void*)0)) ? (gssize) strlen (<br>((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (parent_str, g_type_name (parent), (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> parent = g_type_parent (parent);</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>if</span> (parent_str-&gt;len &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> escaped_printf (out, <span class='string_literal'>" parents=\"%s\""</span>, parent_str-&gt;str);</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='macro'>g_string_free (parent_str, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(parent_str), ((!(0)))) : g_string_free_and_steal (parent_str<br>)) : (g_string_free) ((parent_str), ((!(0)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> goutput_write (out, <span class='string_literal'>"&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> interfaces = g_type_interfaces (type, &amp;n_interfaces);</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n_interfaces; i++)</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> GType itype = interfaces[i];</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;implements name=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> g_type_name (itype));</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> g_free (interfaces);</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> goutput_write (out, <span class='string_literal'>" &lt;/fundamental&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">dump_type (GType type, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='keyword'>switch</span> (g_type_fundamental (type))</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_OBJECT<span class='macro_popup'>((GType) ((20) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> dump_object_type (type, symbol, out);</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_INTERFACE<span class='macro_popup'>((GType) ((2) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> dump_interface_type (type, symbol, out);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_BOXED<span class='macro_popup'>((GType) ((18) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> dump_boxed_type (type, symbol, out);</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_FLAGS<span class='macro_popup'>((GType) ((13) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> dump_flags_type (type, symbol, out);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_ENUM<span class='macro_popup'>((GType) ((12) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> dump_enum_type (type, symbol, out);</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>G_TYPE_POINTER<span class='macro_popup'>((GType) ((17) &lt;&lt; (2)))</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='comment'>/* GValue, etc. Just skip them. */</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> dump_fundamental_type (type, symbol, out);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line">dump_error_quark (GQuark quark, <span class='keyword'>const</span> <span class='keyword'>char</span> *symbol, GOutputStream *out)</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> escaped_printf (out, <span class='string_literal'>" &lt;error-quark function=\"%s\" domain=\"%s\"/&gt;\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> symbol, g_quark_to_string (quark));</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='comment'>* g_irepository_dump:</span></td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='comment'>* @arg: Comma-separated pair of input and output filenames</span></td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> <span class='comment'>* @error: a %GError</span></td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='comment'>* Argument specified is a comma-separated pair of filenames; i.e. of</span></td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='comment'>* the form "input.txt,output.xml". The input file should be a</span></td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='comment'>* UTF-8 Unix-line-ending text file, with each line containing either</span></td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> <span class='comment'>* "get-type:" followed by the name of a GType _get_type function, or</span></td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='comment'>* "error-quark:" followed by the name of an error quark function. No</span></td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='comment'>* extra whitespace is allowed.</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* The output file should already exist, but be empty. This function will</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* overwrite its contents.</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='comment'>* Returns: %TRUE on success, %FALSE on error</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"><span class='directive'>#ifndef G_IREPOSITORY_COMPILATION</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line">dump_irepository (<span class='keyword'>const</span> <span class='keyword'>char</span> *arg, GError **error) <span class='macro'>G_GNUC_UNUSED<span class='macro_popup'>__attribute__ ((__unused__))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line">dump_irepository (<span class='keyword'>const</span> <span class='keyword'>char</span> *arg, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line">g_irepository_dump (<span class='keyword'>const</span> <span class='keyword'>char</span> *arg, GError **error)</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> GHashTable *output_types;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> <span class='keyword'>char</span> **args;</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> GFile *input_file;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> GFile *output_file;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> GFileInputStream *input;</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> GFileOutputStream *output;</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> GDataInputStream *in;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> GModule *self;</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> gboolean caught_error = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> self = g_module_open (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>if</span> (!self)</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> g_set_error (error,</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> G_IO_ERROR_FAILED,</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> <span class='string_literal'>"failed to open self: %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> g_module_error ());</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> args = g_strsplit (arg, <span class='string_literal'>","</span>, 2);</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> input_file = g_file_new_for_path (args[0]);</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> output_file = g_file_new_for_path (args[1]);</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> g_strfreev (args);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> input = g_file_read (input_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> g_object_unref (input_file);</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> <span class='keyword'>if</span> (input == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> g_object_unref (output_file);</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> output = g_file_replace (output_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, error);</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> g_object_unref (output_file);</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='keyword'>if</span> (output == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> g_input_stream_close (<span class='macro'>G_INPUT_STREAM (input)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((input)), ((g_input_stream_get_type ()))))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> g_object_unref (input);</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> goutput_write (<span class='macro'>G_OUTPUT_STREAM (output)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((output)), ((g_output_stream_get_type ()))))))</span></span>, <span class='string_literal'>"&lt;?xml version=\"1.0\"?&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> goutput_write (<span class='macro'>G_OUTPUT_STREAM (output)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((output)), ((g_output_stream_get_type ()))))))</span></span>, <span class='string_literal'>"&lt;dump&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> output_types = g_hash_table_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> in = g_data_input_stream_new (<span class='macro'>G_INPUT_STREAM (input)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((input)), ((g_input_stream_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> g_object_unref (input);</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> <span class='keyword'>while</span> (<span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gsize len;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> <span class='keyword'>char</span> *line = g_data_input_stream_read_line (in, &amp;len, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *function;</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> <span class='keyword'>if</span> (line == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || *line == '\0')</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> g_free (line);</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> g_strchomp (line);</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> <span class='keyword'>if</span> (strncmp (line, <span class='string_literal'>"get-type:"</span>, strlen (<span class='string_literal'>"get-type:"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> GType type;</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> function = line + strlen (<span class='string_literal'>"get-type:"</span>);</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> type = invoke_get_type (self, function, error);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> <span class='keyword'>if</span> (type == <span class='macro'>G_TYPE_INVALID<span class='macro_popup'>((GType) ((0) &lt;&lt; (2)))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> g_printerr (<span class='string_literal'>"Invalid GType function: '%s'\n"</span>, function);</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> caught_error = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> g_free (line);</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (output_types, (gpointer) type))</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='keyword'>goto</span> next;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> g_hash_table_insert (output_types, (gpointer) type, (gpointer) type);</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> dump_type (type, function, <span class='macro'>G_OUTPUT_STREAM (output)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((output)), ((g_output_stream_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (strncmp (line, <span class='string_literal'>"error-quark:"</span>, strlen (<span class='string_literal'>"error-quark:"</span>)) == 0)</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> GQuark quark;</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> function = line + strlen (<span class='string_literal'>"error-quark:"</span>);</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> quark = invoke_error_quark (self, function, error);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> <span class='keyword'>if</span> (quark == 0)</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> g_printerr (<span class='string_literal'>"Invalid error quark function: '%s'\n"</span>, function);</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> caught_error = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> g_free (line);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> dump_error_quark (quark, function, <span class='macro'>G_OUTPUT_STREAM (output)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((output)), ((g_output_stream_get_type ()))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> next:</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> g_free (line);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_hash_table_destroy (output_types);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> goutput_write (<span class='macro'>G_OUTPUT_STREAM (output)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((output)), ((g_output_stream_get_type ()))))))</span></span>, <span class='string_literal'>"&lt;/dump&gt;\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='comment'>/* Avoid overwriting an earlier set error */</span></td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> caught_error |= !g_input_stream_close (<span class='macro'>G_INPUT_STREAM (in)<span class='macro_popup'>((((GInputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((in)), ((g_input_stream_get_type ()))))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> caught_error ? <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> : error);</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> caught_error |= !g_output_stream_close (<span class='macro'>G_OUTPUT_STREAM (output)<span class='macro_popup'>((((GOutputStream*) (void *) g_type_check_instance_cast ((GTypeInstance<br>*) ((output)), ((g_output_stream_get_type ()))))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> caught_error ? <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> : error);</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> g_object_unref (in);</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> g_object_unref (output);</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='keyword'>return</span> !caught_error;</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"><span class='keyword'>int</span></td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">main(<span class='keyword'>int</span> argc, <span class='keyword'>char</span> **argv)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *introspect_dump_prefix = <span class='string_literal'>"--introspect-dump="</span>;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"><span class='directive'>#if !<span class='macro'>GLIB_CHECK_VERSION(2,35,0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 78 &gt; (35)) || (2 == (2<br>) &amp;&amp; 78 == (35) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> g_type_init ();</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> <span class='keyword'>if</span> (argc != 2 || !<span class='macro'>g_str_has_prefix (argv[1], introspect_dump_prefix)<span class='macro_popup'>(__builtin_constant_p (introspect_dump_prefix)? __extension__<br> ({ const char * const __str = (argv[1]); const char * const __prefix<br> = (introspect_dump_prefix); gboolean __result = (0); if (__str<br> == ((void*)0) || __prefix == ((void*)0)) __result = (g_str_has_prefix<br>) (__str, __prefix); else { const size_t __str_len = strlen (<br>((__str) + !(__str))); const size_t __prefix_len = strlen (((<br>__prefix) + !(__prefix))); if (__str_len &gt;= __prefix_len) __result<br> = memcmp (((__str) + !(__str)), ((__prefix) + !(__prefix)), __prefix_len<br>) == 0; } __result; }) : (g_str_has_prefix) (argv[1], introspect_dump_prefix<br>) )</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> g_printerr (<span class='string_literal'>"Usage: %s --introspect-dump=input,output"</span>, argv[0]);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> exit (1);</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='keyword'>if</span> (!dump_irepository (argv[1] + strlen(introspect_dump_prefix), &amp;error))</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> g_printerr (<span class='string_literal'>"%s\n"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> exit (1);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> exit (0);</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"><span class='keyword'>extern</span> GType mate_desktop_item_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"><span class='keyword'>extern</span> GType mate_desktop_thumbnail_factory_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"><span class='keyword'>extern</span> GType mate_bg_crossfade_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"><span class='keyword'>extern</span> GType mate_bg_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_screen_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_output_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_crtc_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_mode_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_output_info_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_config_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"><span class='keyword'>extern</span> GType mate_rr_labeler_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"><span class='keyword'>extern</span> GType mate_color_selection_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"><span class='keyword'>extern</span> GType mate_hsv_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"><span class='keyword'>extern</span> GType mate_color_selection_dialog_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"><span class='keyword'>extern</span> GType mate_image_menu_item_get_type(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"><span class='macro'>G_MODULE_EXPORT<span class='macro_popup'>__attribute__((visibility("default")))</span></span> GType (*GI_GET_TYPE_FUNCS_[])(<span class='keyword'>void</span>) = {</td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> mate_desktop_item_get_type,</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> mate_desktop_thumbnail_factory_get_type,</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> mate_bg_crossfade_get_type,</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> mate_bg_get_type,</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> mate_rr_screen_get_type,</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> mate_rr_output_get_type,</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> mate_rr_crtc_get_type,</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> mate_rr_mode_get_type,</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> mate_rr_output_info_get_type,</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> mate_rr_config_get_type,</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> mate_rr_labeler_get_type,</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> mate_color_selection_get_type,</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> mate_hsv_get_type,</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> mate_color_selection_dialog_get_type,</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> mate_image_menu_item_get_type</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"><span class='keyword'>extern</span> GQuark mate_desktop_item_error_quark(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"><span class='keyword'>extern</span> GQuark mate_rr_error_quark(<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"><span class='macro'>G_MODULE_EXPORT<span class='macro_popup'>__attribute__((visibility("default")))</span></span> GQuark (*GI_ERROR_QUARK_FUNCS_[])(<span class='keyword'>void</span>) = {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> mate_desktop_item_error_quark,</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> mate_rr_error_quark</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line">};</td></tr>
+</table></body></html>
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/scanview.css b/2024-03-11-212501-5924-1@86042f6b7d94_master/scanview.css
new file mode 100644
index 0000000..cf8a5a6
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/scanview.css
@@ -0,0 +1,62 @@
+body { color:#000000; background-color:#ffffff }
+body { font-family: Helvetica, sans-serif; font-size:9pt }
+h1 { font-size: 14pt; }
+h2 { font-size: 12pt; }
+table { font-size:9pt }
+table { border-spacing: 0px; border: 1px solid black }
+th, table thead {
+ background-color:#eee; color:#666666;
+ font-weight: bold; cursor: default;
+ text-align:center;
+ font-weight: bold; font-family: Verdana;
+ white-space:nowrap;
+}
+.W { font-size:0px }
+th, td { padding:5px; padding-left:8px; text-align:left }
+td.SUMM_DESC { padding-left:12px }
+td.DESC { white-space:pre }
+td.Q { text-align:right }
+td { text-align:left }
+tbody.scrollContent { overflow:auto }
+
+table.form_group {
+ background-color: #ccc;
+ border: 1px solid #333;
+ padding: 2px;
+}
+
+table.form_inner_group {
+ background-color: #ccc;
+ border: 1px solid #333;
+ padding: 0px;
+}
+
+table.form {
+ background-color: #999;
+ border: 1px solid #333;
+ padding: 2px;
+}
+
+td.form_label {
+ text-align: right;
+ vertical-align: top;
+}
+/* For one line entires */
+td.form_clabel {
+ text-align: right;
+ vertical-align: center;
+}
+td.form_value {
+ text-align: left;
+ vertical-align: top;
+}
+td.form_submit {
+ text-align: right;
+ vertical-align: top;
+}
+
+h1.SubmitFail {
+ color: #f00;
+}
+h1.SubmitOk {
+}
diff --git a/2024-03-11-212501-5924-1@86042f6b7d94_master/sorttable.js b/2024-03-11-212501-5924-1@86042f6b7d94_master/sorttable.js
new file mode 100644
index 0000000..32faa07
--- /dev/null
+++ b/2024-03-11-212501-5924-1@86042f6b7d94_master/sorttable.js
@@ -0,0 +1,492 @@
+/*
+ SortTable
+ version 2
+ 7th April 2007
+ Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
+
+ Instructions:
+ Download this file
+ Add <script src="sorttable.js"></script> to your HTML
+ Add class="sortable" to any table you'd like to make sortable
+ Click on the headers to sort
+
+ Thanks to many, many people for contributions and suggestions.
+ Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
+ This basically means: do what you want with it.
+*/
+
+
+var stIsIE = /*@cc_on!@*/false;
+
+sorttable = {
+ init: function() {
+ // quit if this function has already been called
+ if (arguments.callee.done) return;
+ // flag this function so we don't do the same thing twice
+ arguments.callee.done = true;
+ // kill the timer
+ if (_timer) clearInterval(_timer);
+
+ if (!document.createElement || !document.getElementsByTagName) return;
+
+ sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
+
+ forEach(document.getElementsByTagName('table'), function(table) {
+ if (table.className.search(/\bsortable\b/) != -1) {
+ sorttable.makeSortable(table);
+ }
+ });
+
+ },
+
+ makeSortable: function(table) {
+ if (table.getElementsByTagName('thead').length == 0) {
+ // table doesn't have a tHead. Since it should have, create one and
+ // put the first table row in it.
+ the = document.createElement('thead');
+ the.appendChild(table.rows[0]);
+ table.insertBefore(the,table.firstChild);
+ }
+ // Safari doesn't support table.tHead, sigh
+ if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
+
+ if (table.tHead.rows.length != 1) return; // can't cope with two header rows
+
+ // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
+ // "total" rows, for example). This is B&R, since what you're supposed
+ // to do is put them in a tfoot. So, if there are sortbottom rows,
+ // for backward compatibility, move them to tfoot (creating it if needed).
+ sortbottomrows = [];
+ for (var i=0; i<table.rows.length; i++) {
+ if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
+ sortbottomrows[sortbottomrows.length] = table.rows[i];
+ }
+ }
+ if (sortbottomrows) {
+ if (table.tFoot == null) {
+ // table doesn't have a tfoot. Create one.
+ tfo = document.createElement('tfoot');
+ table.appendChild(tfo);
+ }
+ for (var i=0; i<sortbottomrows.length; i++) {
+ tfo.appendChild(sortbottomrows[i]);
+ }
+ delete sortbottomrows;
+ }
+
+ // work through each column and calculate its type
+ headrow = table.tHead.rows[0].cells;
+ for (var i=0; i<headrow.length; i++) {
+ // manually override the type with a sorttable_type attribute
+ if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
+ mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
+ if (mtch) { override = mtch[1]; }
+ if (mtch && typeof sorttable["sort_"+override] == 'function') {
+ headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
+ } else {
+ headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
+ }
+ // make it clickable to sort
+ headrow[i].sorttable_columnindex = i;
+ headrow[i].sorttable_tbody = table.tBodies[0];
+ dean_addEvent(headrow[i],"click", function(e) {
+
+ if (this.className.search(/\bsorttable_sorted\b/) != -1) {
+ // if we're already sorted by this column, just
+ // reverse the table, which is quicker
+ sorttable.reverse(this.sorttable_tbody);
+ this.className = this.className.replace('sorttable_sorted',
+ 'sorttable_sorted_reverse');
+ this.removeChild(document.getElementById('sorttable_sortfwdind'));
+ sortrevind = document.createElement('span');
+ sortrevind.id = "sorttable_sortrevind";
+ sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
+ this.appendChild(sortrevind);
+ return;
+ }
+ if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
+ // if we're already sorted by this column in reverse, just
+ // re-reverse the table, which is quicker
+ sorttable.reverse(this.sorttable_tbody);
+ this.className = this.className.replace('sorttable_sorted_reverse',
+ 'sorttable_sorted');
+ this.removeChild(document.getElementById('sorttable_sortrevind'));
+ sortfwdind = document.createElement('span');
+ sortfwdind.id = "sorttable_sortfwdind";
+ sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
+ this.appendChild(sortfwdind);
+ return;
+ }
+
+ // remove sorttable_sorted classes
+ theadrow = this.parentNode;
+ forEach(theadrow.childNodes, function(cell) {
+ if (cell.nodeType == 1) { // an element
+ cell.className = cell.className.replace('sorttable_sorted_reverse','');
+ cell.className = cell.className.replace('sorttable_sorted','');
+ }
+ });
+ sortfwdind = document.getElementById('sorttable_sortfwdind');
+ if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
+ sortrevind = document.getElementById('sorttable_sortrevind');
+ if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
+
+ this.className += ' sorttable_sorted';
+ sortfwdind = document.createElement('span');
+ sortfwdind.id = "sorttable_sortfwdind";
+ sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
+ this.appendChild(sortfwdind);
+
+ // build an array to sort. This is a Schwartzian transform thing,
+ // i.e., we "decorate" each row with the actual sort key,
+ // sort based on the sort keys, and then put the rows back in order
+ // which is a lot faster because you only do getInnerText once per row
+ row_array = [];
+ col = this.sorttable_columnindex;
+ rows = this.sorttable_tbody.rows;
+ for (var j=0; j<rows.length; j++) {
+ row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
+ }
+ /* If you want a stable sort, uncomment the following line */
+ sorttable.shaker_sort(row_array, this.sorttable_sortfunction);
+ /* and comment out this one */
+ //row_array.sort(this.sorttable_sortfunction);
+
+ tb = this.sorttable_tbody;
+ for (var j=0; j<row_array.length; j++) {
+ tb.appendChild(row_array[j][1]);
+ }
+
+ delete row_array;
+ });
+ }
+ }
+ },
+
+ guessType: function(table, column) {
+ // guess the type of a column based on its first non-blank row
+ sortfn = sorttable.sort_alpha;
+ for (var i=0; i<table.tBodies[0].rows.length; i++) {
+ text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
+ if (text != '') {
+ if (text.match(/^-?[�$�]?[\d,.]+%?$/)) {
+ return sorttable.sort_numeric;
+ }
+ // check for a date: dd/mm/yyyy or dd/mm/yy
+ // can have / or . or - as separator
+ // can be mm/dd as well
+ possdate = text.match(sorttable.DATE_RE)
+ if (possdate) {
+ // looks like a date
+ first = parseInt(possdate[1]);
+ second = parseInt(possdate[2]);
+ if (first > 12) {
+ // definitely dd/mm
+ return sorttable.sort_ddmm;
+ } else if (second > 12) {
+ return sorttable.sort_mmdd;
+ } else {
+ // looks like a date, but we can't tell which, so assume
+ // that it's dd/mm (English imperialism!) and keep looking
+ sortfn = sorttable.sort_ddmm;
+ }
+ }
+ }
+ }
+ return sortfn;
+ },
+
+ getInnerText: function(node) {
+ // gets the text we want to use for sorting for a cell.
+ // strips leading and trailing whitespace.
+ // this is *not* a generic getInnerText function; it's special to sorttable.
+ // for example, you can override the cell text with a customkey attribute.
+ // it also gets .value for <input> fields.
+
+ hasInputs = (typeof node.getElementsByTagName == 'function') &&
+ node.getElementsByTagName('input').length;
+
+ if (node.getAttribute("sorttable_customkey") != null) {
+ return node.getAttribute("sorttable_customkey");
+ }
+ else if (typeof node.textContent != 'undefined' && !hasInputs) {
+ return node.textContent.replace(/^\s+|\s+$/g, '');
+ }
+ else if (typeof node.innerText != 'undefined' && !hasInputs) {
+ return node.innerText.replace(/^\s+|\s+$/g, '');
+ }
+ else if (typeof node.text != 'undefined' && !hasInputs) {
+ return node.text.replace(/^\s+|\s+$/g, '');
+ }
+ else {
+ switch (node.nodeType) {
+ case 3:
+ if (node.nodeName.toLowerCase() == 'input') {
+ return node.value.replace(/^\s+|\s+$/g, '');
+ }
+ case 4:
+ return node.nodeValue.replace(/^\s+|\s+$/g, '');
+ break;
+ case 1:
+ case 11:
+ var innerText = '';
+ for (var i = 0; i < node.childNodes.length; i++) {
+ innerText += sorttable.getInnerText(node.childNodes[i]);
+ }
+ return innerText.replace(/^\s+|\s+$/g, '');
+ break;
+ default:
+ return '';
+ }
+ }
+ },
+
+ reverse: function(tbody) {
+ // reverse the rows in a tbody
+ newrows = [];
+ for (var i=0; i<tbody.rows.length; i++) {
+ newrows[newrows.length] = tbody.rows[i];
+ }
+ for (var i=newrows.length-1; i>=0; i--) {
+ tbody.appendChild(newrows[i]);
+ }
+ delete newrows;
+ },
+
+ /* sort functions
+ each sort function takes two parameters, a and b
+ you are comparing a[0] and b[0] */
+ sort_numeric: function(a,b) {
+ aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
+ if (isNaN(aa)) aa = 0;
+ bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
+ if (isNaN(bb)) bb = 0;
+ return aa-bb;
+ },
+ sort_alpha: function(a,b) {
+ if (a[0]==b[0]) return 0;
+ if (a[0]<b[0]) return -1;
+ return 1;
+ },
+ sort_ddmm: function(a,b) {
+ mtch = a[0].match(sorttable.DATE_RE);
+ y = mtch[3]; m = mtch[2]; d = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt1 = y+m+d;
+ mtch = b[0].match(sorttable.DATE_RE);
+ y = mtch[3]; m = mtch[2]; d = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt2 = y+m+d;
+ if (dt1==dt2) return 0;
+ if (dt1<dt2) return -1;
+ return 1;
+ },
+ sort_mmdd: function(a,b) {
+ mtch = a[0].match(sorttable.DATE_RE);
+ y = mtch[3]; d = mtch[2]; m = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt1 = y+m+d;
+ mtch = b[0].match(sorttable.DATE_RE);
+ y = mtch[3]; d = mtch[2]; m = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt2 = y+m+d;
+ if (dt1==dt2) return 0;
+ if (dt1<dt2) return -1;
+ return 1;
+ },
+
+ shaker_sort: function(list, comp_func) {
+ // A stable sort function to allow multi-level sorting of data
+ // see: http://en.wikipedia.org/wiki/Cocktail_sort
+ // thanks to Joseph Nahmias
+ var b = 0;
+ var t = list.length - 1;
+ var swap = true;
+
+ while(swap) {
+ swap = false;
+ for(var i = b; i < t; ++i) {
+ if ( comp_func(list[i], list[i+1]) > 0 ) {
+ var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
+ swap = true;
+ }
+ } // for
+ t--;
+
+ if (!swap) break;
+
+ for(var i = t; i > b; --i) {
+ if ( comp_func(list[i], list[i-1]) < 0 ) {
+ var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
+ swap = true;
+ }
+ } // for
+ b++;
+
+ } // while(swap)
+ }
+}
+
+/* ******************************************************************
+ Supporting functions: bundled here to avoid depending on a library
+ ****************************************************************** */
+
+// Dean Edwards/Matthias Miller/John Resig
+
+/* for Mozilla/Opera9 */
+if (document.addEventListener) {
+ document.addEventListener("DOMContentLoaded", sorttable.init, false);
+}
+
+/* for Internet Explorer */
+/*@cc_on @*/
+/*@if (@_win32)
+ document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
+ var script = document.getElementById("__ie_onload");
+ script.onreadystatechange = function() {
+ if (this.readyState == "complete") {
+ sorttable.init(); // call the onload handler
+ }
+ };
+/*@end @*/
+
+/* for Safari */
+if (/WebKit/i.test(navigator.userAgent)) { // sniff
+ var _timer = setInterval(function() {
+ if (/loaded|complete/.test(document.readyState)) {
+ sorttable.init(); // call the onload handler
+ }
+ }, 10);
+}
+
+/* for other browsers */
+window.onload = sorttable.init;
+
+// written by Dean Edwards, 2005
+// with input from Tino Zijdel, Matthias Miller, Diego Perini
+
+// http://dean.edwards.name/weblog/2005/10/add-event/
+
+function dean_addEvent(element, type, handler) {
+ if (element.addEventListener) {
+ element.addEventListener(type, handler, false);
+ } else {
+ // assign each event handler a unique ID
+ if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
+ // create a hash table of event types for the element
+ if (!element.events) element.events = {};
+ // create a hash table of event handlers for each element/event pair
+ var handlers = element.events[type];
+ if (!handlers) {
+ handlers = element.events[type] = {};
+ // store the existing event handler (if there is one)
+ if (element["on" + type]) {
+ handlers[0] = element["on" + type];
+ }
+ }
+ // store the event handler in the hash table
+ handlers[handler.$$guid] = handler;
+ // assign a global event handler to do all the work
+ element["on" + type] = handleEvent;
+ }
+};
+// a counter used to create unique IDs
+dean_addEvent.guid = 1;
+
+function removeEvent(element, type, handler) {
+ if (element.removeEventListener) {
+ element.removeEventListener(type, handler, false);
+ } else {
+ // delete the event handler from the hash table
+ if (element.events && element.events[type]) {
+ delete element.events[type][handler.$$guid];
+ }
+ }
+};
+
+function handleEvent(event) {
+ var returnValue = true;
+ // grab the event object (IE uses a global event object)
+ event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
+ // get a reference to the hash table of event handlers
+ var handlers = this.events[event.type];
+ // execute each event handler
+ for (var i in handlers) {
+ this.$$handleEvent = handlers[i];
+ if (this.$$handleEvent(event) === false) {
+ returnValue = false;
+ }
+ }
+ return returnValue;
+};
+
+function fixEvent(event) {
+ // add W3C standard event methods
+ event.preventDefault = fixEvent.preventDefault;
+ event.stopPropagation = fixEvent.stopPropagation;
+ return event;
+};
+fixEvent.preventDefault = function() {
+ this.returnValue = false;
+};
+fixEvent.stopPropagation = function() {
+ this.cancelBubble = true;
+}
+
+// Dean's forEach: http://dean.edwards.name/base/forEach.js
+/*
+ forEach, version 1.0
+ Copyright 2006, Dean Edwards
+ License: http://www.opensource.org/licenses/mit-license.php
+*/
+
+// array-like enumeration
+if (!Array.forEach) { // mozilla already supports this
+ Array.forEach = function(array, block, context) {
+ for (var i = 0; i < array.length; i++) {
+ block.call(context, array[i], i, array);
+ }
+ };
+}
+
+// generic enumeration
+Function.prototype.forEach = function(object, block, context) {
+ for (var key in object) {
+ if (typeof this.prototype[key] == "undefined") {
+ block.call(context, object[key], key, object);
+ }
+ }
+};
+
+// character enumeration
+String.forEach = function(string, block, context) {
+ Array.forEach(string.split(""), function(chr, index) {
+ block.call(context, chr, index, string);
+ });
+};
+
+// globally resolve forEach enumeration
+var forEach = function(object, block, context) {
+ if (object) {
+ var resolve = Object; // default
+ if (object instanceof Function) {
+ // functions have a "length" property
+ resolve = Function;
+ } else if (object.forEach instanceof Function) {
+ // the object implements a custom forEach method so use that
+ object.forEach(block, context);
+ return;
+ } else if (typeof object == "string") {
+ // the object is a string
+ resolve = String;
+ } else if (typeof object.length == "number") {
+ // the object is array-like
+ resolve = Array;
+ }
+ resolve.forEach(object, block, context);
+ }
+};