diff options
author | raveit65 (via Travis CI) <[email protected]> | 2024-02-21 23:30:40 +0000 |
---|---|---|
committer | raveit65 (via Travis CI) <[email protected]> | 2024-02-21 23:30:40 +0000 |
commit | 487489674adcca6aa6e003759aa519778e596459 (patch) | |
tree | d49a0a44acb334e961dfc3b0fd5ad816a24e54c0 /2023-10-08-232600-14316-1@fd9dbddae4cb_master | |
download | mate-applets-gh-pages.tar.bz2 mate-applets-gh-pages.tar.xz |
Deploy mate-desktop/mate-applets to github.com/mate-desktop/mate-applets.git:gh-pagesgh-pages
Diffstat (limited to '2023-10-08-232600-14316-1@fd9dbddae4cb_master')
8 files changed, 8003 insertions, 0 deletions
diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/index.html b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/index.html new file mode 100644 index 00000000..0566a2ce --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/index.html @@ -0,0 +1,112 @@ +<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@704e4877f92c</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 16.0.6 (Fedora 16.0.6-3.fc38) +</td></tr> +<tr><th>Date:</th><td>Sun Oct 8 23:26:00 2023</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">5</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">Division by zero</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_division_by_zero');" checked/></center></td></tr> +<tr><td class="SUMM_DESC">Out-of-bound access</td><td class="Q">1</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">Result of operation is garbage or undefined</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_result_of_operation_is_garbage_or_undefined');" checked/></center></td></tr> +<tr><th>Security</th><th colspan=2></th></tr> +<tr><td class="SUMM_DESC">Potential insecure memory buffer bounds restriction in call 'strcpy'</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_security_potential_insecure_memory_buffer_bounds_restriction_in_call_strcpy_');" checked/></center></td></tr> +<tr><th>Unused code</th><th colspan=2></th></tr> +<tr><td class="SUMM_DESC">Dead assignment</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_unused_code_dead_assignment');" 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"> ▾</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_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead assignment</td><td>geyes/src/themes.c</td><td class="DESC">parse_theme_file</td><td class="Q">80</td><td class="Q">1</td><td><a href="report-782963.html#EndPath">View Report</a></td> +<!-- REPORTBUG id="report-782963.html" --> +</tr> +<tr class="bt_logic_error_division_by_zero"><td class="DESC">Logic error</td><td class="DESC">Division by zero</td><td>multiload/src/load-graph.c</td><td class="DESC">load_graph_draw</td><td class="Q">106</td><td class="Q">14</td><td><a href="report-ad73bf.html#EndPath">View Report</a></td> +<!-- REPORTBUG id="report-ad73bf.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>netspeed/src/netspeed.c</td><td class="DESC">mac_addr_n2a</td><td class="Q">671</td><td class="Q">25</td><td><a href="report-8b7574.html#EndPath">View Report</a></td> +<!-- REPORTBUG id="report-8b7574.html" --> +</tr> +<tr class="bt_security_potential_insecure_memory_buffer_bounds_restriction_in_call_strcpy_"><td class="DESC">Security</td><td class="DESC">Potential insecure memory buffer bounds restriction in call 'strcpy'</td><td>battstat/apmlib/apmlib.c</td><td class="DESC">apm_read</td><td class="Q">89</td><td class="Q">1</td><td><a href="report-3faa94.html#EndPath">View Report</a></td> +<!-- REPORTBUG id="report-3faa94.html" --> +</tr> +<tr class="bt_logic_error_result_of_operation_is_garbage_or_undefined"><td class="DESC">Logic error</td><td class="DESC">Result of operation is garbage or undefined</td><td>stickynotes/stickynotes_applet.c</td><td class="DESC">stickynotes_applet_init</td><td class="Q">224</td><td class="Q">11</td><td><a href="report-0cb404.html#EndPath">View Report</a></td> +<!-- REPORTBUG id="report-0cb404.html" --> +</tr> +</tbody> +</table> + +</body></html> diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-0cb404.html b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-0cb404.html new file mode 100644 index 00000000..0d6f6493 --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-0cb404.html @@ -0,0 +1,1380 @@ +<!doctype html> +<html> +<head> +<title>stickynotes_applet.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 The right operand of '*' is a garbage value --> + +<!-- BUGTYPE Result of operation is garbage or undefined --> + +<!-- BUGCATEGORY Logic error --> + +<!-- BUGFILE /rootdir/stickynotes/stickynotes_applet.c --> + +<!-- FILENAME stickynotes_applet.c --> + +<!-- FUNCTIONNAME stickynotes_applet_init --> + +<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 0cb4043e8cef1f9b7ab7c689a6905145 --> + +<!-- BUGLINE 224 --> + +<!-- BUGCOLUMN 42 --> + +<!-- BUGPATHLENGTH 11 --> + +<!-- BUGMETAEND --> +<!-- REPORTHEADER --> +<h3>Bug Summary</h3> +<table class="simpletable"> +<tr><td class="rowname">File:</td><td>stickynotes/stickynotes_applet.c</td></tr> +<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 224, column 42</a><br />The right operand of '*' is a garbage 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 stickynotes_applet.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=none -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/stickynotes -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I . -I . -I /usr/include/gtksourceview-4 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/mate-panel-4.0/libmate-panel-applet -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/libwnck-3.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/startup-notification-1.0 -I /usr/include/libxml2 -D GRESOURCE="/org/mate/mate-applets/sticky-notes/" -internal-isystem /usr/lib64/clang/16/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 -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/stickynotes -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -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/2023-10-08-232600-14316-1 -x c stickynotes_applet.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": {"62": 1, "63": 1, "64": 1, "65": 1, "66": 1, "67": 1, "68": 1, "69": 1, "94": 1, "95": 1, "96": 1, "97": 1, "98": 1, "99": 1, "100": 1, "101": 1, "102": 1, "103": 1, "104": 1, "105": 1, "106": 1, "108": 1, "109": 1, "110": 1, "111": 1, "112": 1, "113": 1, "114": 1, "116": 1, "135": 1, "136": 1, "137": 1, "138": 1, "139": 1, "140": 1, "143": 1, "144": 1, "145": 1, "146": 1, "148": 1, "149": 1, "151": 1, "164": 1, "165": 1, "166": 1, "167": 1, "168": 1, "169": 1, "170": 1, "172": 1, "174": 1, "175": 1, "176": 1, "178": 1, "179": 1, "182": 1, "184": 1, "186": 1, "187": 1, "189": 1, "191": 1, "192": 1, "193": 1, "194": 1, "195": 1, "197": 1, "198": 1, "200": 1, "201": 1, "202": 1, "204": 1, "205": 1, "207": 1, "208": 1, "211": 1, "218": 1, "220": 1, "224": 1, "232": 1, "233": 1, "234": 1, "236": 1, "238": 1, "240": 1, "242": 1, "243": 1, "246": 1, "247": 1, "249": 1, "250": 1, "252": 1, "253": 1, "255": 1, "256": 1, "258": 1, "259": 1, "261": 1, "262": 1, "264": 1, "265": 1, "267": 1, "268": 1, "270": 1, "271": 1, "273": 1, "274": 1, "277": 1, "279": 1, "281": 1, "283": 1, "285": 1, "287": 1, "289": 1, "291": 1, "293": 1, "295": 1, "297": 1, "299": 1, "303": 1, "305": 1, "306": 1, "308": 1, "309": 1, "311": 1, "312": 1, "315": 1, "318": 1, "326": 1, "334": 1, "340": 1, "346": 1, "348": 1, "354": 1, "356": 1, "358": 1, "361": 1, "478": 1, "479": 1, "480": 1, "481": 1, "482": 1, "483": 1, "484": 1, "485": 1, "487": 1, "488": 1, "489": 1, "490": 1, "491": 1, "492": 1, "494": 1, "495": 1, "496": 1, "497": 1, "498": 1, "499": 1, "500": 1, "501": 1, "502": 1, "503": 1, "505": 1, "506": 1, "507": 1, "510": 1, "511": 1, "512": 1, "515": 1, "516": 1, "517": 1, "520": 1, "521": 1, "523": 1, "524": 1, "526": 1, "527": 1, "528": 1, "529": 1, "530": 1, "531": 1, "532": 1, "533": 1, "534": 1, "535": 1, "536": 1, "537": 1, "539": 1, "540": 1, "541": 1, "542": 1, "544": 1, "545": 1, "546": 1, "548": 1, "554": 1, "560": 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"/> + + </g> +</svg> +<script type='text/javascript'> +const arrowIndices = [ 25,24,24,22,21,19,13,7,5,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'>/* Sticky Notes</span></td></tr> +<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Copyright (C) 2002-2003 Loban A Rahman</span></td></tr> +<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</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="5"><td class="num" id="LN5">5</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="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2, or (at your option)</span></td></tr> +<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* any later version.</span></td></tr> +<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</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="10"><td class="num" id="LN10">10</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="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr> +<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr> +<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</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="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr> +<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA</span></td></tr> +<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* 02110-1301, USA.</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"> </td></tr> +<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"><span class='directive'>#include <config.h></span></td></tr> +<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='directive'>#include <string.h></span></td></tr> +<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"><span class='directive'>#include "stickynotes_applet.h"</span></td></tr> +<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include "stickynotes_applet_callbacks.h"</span></td></tr> +<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include "stickynotes.h"</span></td></tr> +<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include <gtk/gtk.h></span></td></tr> +<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include <gdk/gdkx.h></span></td></tr> +<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line">StickyNotes *stickynotes = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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'>/* Popup menu on the applet */</span></td></tr> +<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> GtkActionEntry stickynotes_applet_menu_actions[] =</td></tr> +<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> { <span class='string_literal'>"new_note"</span>, <span class='string_literal'>"document-new"</span>, <span class='macro'>N_(<span class='string_literal'>"_New Note"</span>)<span class='macro_popup'>("_New Note")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</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="36"><td class="num" id="LN36">36</td><td class="line"> <span class='macro'>G_CALLBACK (menu_new_note_cb)<span class='macro_popup'>((GCallback) (menu_new_note_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> { <span class='string_literal'>"hide_notes"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>N_(<span class='string_literal'>"Hi_de Notes"</span>)<span class='macro_popup'>("Hi_de Notes")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</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="39"><td class="num" id="LN39">39</td><td class="line"> <span class='macro'>G_CALLBACK (menu_hide_notes_cb)<span class='macro_popup'>((GCallback) (menu_hide_notes_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> { <span class='string_literal'>"destroy_all"</span>, <span class='string_literal'>"edit-delete"</span>, <span class='macro'>N_(<span class='string_literal'>"_Delete Notes"</span>)<span class='macro_popup'>("_Delete Notes")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</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="42"><td class="num" id="LN42">42</td><td class="line"> <span class='macro'>G_CALLBACK (menu_destroy_all_cb)<span class='macro_popup'>((GCallback) (menu_destroy_all_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> { <span class='string_literal'>"preferences"</span>, <span class='string_literal'>"document-properties"</span>, <span class='macro'>N_(<span class='string_literal'>"_Preferences"</span>)<span class='macro_popup'>("_Preferences")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</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="45"><td class="num" id="LN45">45</td><td class="line"> <span class='macro'>G_CALLBACK (menu_preferences_cb)<span class='macro_popup'>((GCallback) (menu_preferences_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> { <span class='string_literal'>"help"</span>, <span class='string_literal'>"help-browser"</span>, <span class='macro'>N_(<span class='string_literal'>"_Help"</span>)<span class='macro_popup'>("_Help")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</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="48"><td class="num" id="LN48">48</td><td class="line"> <span class='macro'>G_CALLBACK (menu_help_cb)<span class='macro_popup'>((GCallback) (menu_help_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> { <span class='string_literal'>"about"</span>, <span class='string_literal'>"help-about"</span>, <span class='macro'>N_(<span class='string_literal'>"_About"</span>)<span class='macro_popup'>("_About")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</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="51"><td class="num" id="LN51">51</td><td class="line"> <span class='macro'>G_CALLBACK (menu_about_cb)<span class='macro_popup'>((GCallback) (menu_about_cb))</span></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"> </td></tr> +<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> GtkToggleActionEntry stickynotes_applet_menu_toggle_actions[] =</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='string_literal'>"lock"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>N_(<span class='string_literal'>"_Lock Notes"</span>)<span class='macro_popup'>("_Lock Notes")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</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="58"><td class="num" id="LN58">58</td><td class="line"> <span class='macro'>G_CALLBACK (menu_toggle_lock_cb)<span class='macro_popup'>((GCallback) (menu_toggle_lock_cb))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(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"> </td></tr> +<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='comment'>/* Sticky Notes applet factory */</span></td></tr> +<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line">stickynotes_applet_factory (MatePanelApplet *mate_panel_applet,</td></tr> +<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> <span class='keyword'>const</span> gchar *iid,</td></tr> +<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> gpointer data)</td></tr> +<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span class='keyword'>if</span> (!strcmp (iid, <span class='string_literal'>"StickyNotesApplet"</span>)) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgControl" style="margin-left:5ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">1</div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span id="start24"><span class='keyword'>if</span></span> (<span id="start23"><span class="mrange">!</span><span id="end24">stickynotes</span></span>)</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgEvent" style="margin-left:13ex"><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)">←</a></div></td><td>Assuming 'stickynotes' is null</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">→</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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> <span class="mrange"><span id="end21"><span id="start22"><span id="end23">stickynotes_applet_init</span></span></span> (<span id="start21"><span id="end22">mate_panel_applet</span></span>)</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:13ex"><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)">←</a></div></td><td>Calling 'stickynotes_applet_init'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">→</a></div></td></tr></table></div></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"> mate_panel_applet_set_flags (mate_panel_applet, MATE_PANEL_APPLET_EXPAND_MINOR);</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='comment'>/* Add applet to linked list of all applets */</span></td></tr> +<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> stickynotes->applets = g_list_append (stickynotes->applets,</td></tr> +<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> stickynotes_applet_new (mate_panel_applet));</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"> stickynotes_applet_update_menus ();</td></tr> +<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> stickynotes_applet_update_tooltips ();</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'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> }</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'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='comment'>/* Sticky Notes applet factory */</span></td></tr> +<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"><span class='macro'>PANEL_APPLET_FACTORY (<span class='string_literal'>"StickyNotesAppletFactory"</span>,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("StickyNotesAppletFactory"<br>,(!(0)), mate_panel_applet_get_type (), stickynotes_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> <span class='macro'>PANEL_TYPE_APPLET,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("StickyNotesAppletFactory"<br>,(!(0)), mate_panel_applet_get_type (), stickynotes_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class='string_literal'><span class='macro'>"stickynotes_applet"</span>,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("StickyNotesAppletFactory"<br>,(!(0)), mate_panel_applet_get_type (), stickynotes_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> <span class='macro'>stickynotes_applet_factory,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("StickyNotesAppletFactory"<br>,(!(0)), mate_panel_applet_get_type (), stickynotes_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("StickyNotesAppletFactory"<br>,(!(0)), mate_panel_applet_get_type (), stickynotes_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></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"><span class='comment'>/* colorshift a surface */</span></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></td></tr> +<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line">stickynotes_make_prelight_icon (cairo_surface_t *dest,</td></tr> +<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> cairo_surface_t *src,</td></tr> +<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> <span class='keyword'>int</span> shift)</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"> gint i, j;</td></tr> +<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> gint width, height, has_alpha, srcrowstride, destrowstride;</td></tr> +<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> guchar *target_pixels;</td></tr> +<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> guchar *original_pixels;</td></tr> +<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> guchar *pixsrc;</td></tr> +<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> guchar *pixdest;</td></tr> +<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> <span class='keyword'>int</span> val;</td></tr> +<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> guchar r,g,b;</td></tr> +<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> has_alpha = cairo_surface_get_content (src) != CAIRO_CONTENT_COLOR;</td></tr> +<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> width = cairo_image_surface_get_width (src);</td></tr> +<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> height = cairo_image_surface_get_height (src);</td></tr> +<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> srcrowstride = cairo_image_surface_get_stride (src);</td></tr> +<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> destrowstride = cairo_image_surface_get_stride (dest);</td></tr> +<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> original_pixels = cairo_image_surface_get_data (src);</td></tr> +<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> target_pixels = cairo_image_surface_get_data (dest);</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='keyword'>for</span> (i = 0; i < height; i++) {</td></tr> +<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> pixdest = target_pixels + i*destrowstride;</td></tr> +<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> pixsrc = original_pixels + i*srcrowstride;</td></tr> +<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='keyword'>for</span> (j = 0; j < width; j++) {</td></tr> +<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> r = *(pixsrc++);</td></tr> +<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> g = *(pixsrc++);</td></tr> +<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> b = *(pixsrc++);</td></tr> +<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> val = r + shift;</td></tr> +<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> *(pixdest++) = <span class='macro'>CLAMP (val, 0, 255)<span class='macro_popup'>(((val) > (255)) ? (255) : (((val) < (0)) ? (0) : (val)<br>))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> val = g + shift;</td></tr> +<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> *(pixdest++) = <span class='macro'>CLAMP (val, 0, 255)<span class='macro_popup'>(((val) > (255)) ? (255) : (((val) < (0)) ? (0) : (val)<br>))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> val = b + shift;</td></tr> +<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> *(pixdest++) = <span class='macro'>CLAMP (val, 0, 255)<span class='macro_popup'>(((val) > (255)) ? (255) : (((val) < (0)) ? (0) : (val)<br>))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='keyword'>if</span> (has_alpha)</td></tr> +<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> *(pixdest++) = *(pixsrc++);</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">}</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> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line">icon_theme_changed (GtkIconTheme *icon_theme,</td></tr> +<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> gpointer user_data)</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"> gtk_icon_theme_append_search_path (icon_theme,</td></tr> +<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='macro'>PKG_DATA_DIR<span class='macro_popup'>"/usr/local/share/mate-applets"</span></span> <span class='macro'>G_DIR_SEPARATOR_S<span class='macro_popup'>"/"</span></span> <span class='string_literal'>"icons"</span>);</td></tr> +<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line">}</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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line">stickynotes_applet_init_icons (<span class='keyword'>void</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"> GtkIconTheme *icon_theme;</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"> icon_theme = gtk_icon_theme_get_default ();</td></tr> +<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> icon_theme_changed (icon_theme, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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='macro'>g_signal_connect (gtk_icon_theme_get_default (), <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((gtk_icon_theme_get_default ()), ("changed"<br>), (((GCallback) (icon_theme_changed))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>G_CALLBACK (icon_theme_changed), NULL)<span class='macro_popup'>g_signal_connect_data ((gtk_icon_theme_get_default ()), ("changed"<br>), (((GCallback) (icon_theme_changed))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line">}</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='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line">stickynotes_destroy (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> gpointer user_dta)</td></tr> +<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (gtk_icon_theme_get_default (),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((gtk_icon_theme_get_default<br> ()), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (icon_theme_changed), (((void*)0)))</span></span></td></tr> +<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> <span class='macro'>icon_theme_changed, NULL)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((gtk_icon_theme_get_default<br> ()), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (icon_theme_changed), (((void*)0)))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line">}</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'>/* Create and initalize global sticky notes instance */</span></td></tr> +<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"><span id="start20"><span class='keyword'>void</span></td></tr></span> +<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line">stickynotes_applet_init (MatePanelApplet *mate_panel_applet)</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"> <span id="start19"><span id="end20">cairo_t</span></span> *cr;</td></tr> +<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> gint size, scale;</td></tr> +<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> <span id="start18"><span class="mrange"><span id="end19"><span class='keyword'>int</span></span></span> screen_height</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:5ex"><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)">←</a></div></td><td>'screen_height' declared without an initial value</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span id="start17"><span id="end18">GdkScreen</span></span> *screen;</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"> <span id="start10"><span id="end11">stickynotes</span></span> = <span id="start11"><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="end17"><span class='macro'>g_new</span></span></span></span></span></span></span></span></span></span></span></span> (StickyNotes, 1)<span class='macro_popup'>(StickyNotes *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (StickyNotes); gpointer __p; if (__s == 1) __p =<br> g_malloc (__n); else if (__builtin_constant_p (__n) &&<br> (__s == 0 || __n <= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc (__n * __s); else __p = g_malloc_n (__n, __s<br>); __p; }))</span></span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:19ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">→</a></div></td></tr></table></div></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"> stickynotes->notes = <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"> stickynotes->applets = <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"> stickynotes->last_timeout_data = 0;</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"> size = mate_panel_applet_get_size (mate_panel_applet);</td></tr> +<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> scale = gtk_widget_get_scale_factor (<span class='macro'>GTK_WIDGET (mate_panel_applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((mate_panel_applet)))))</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"><span class='directive'>#ifndef ENABLE_IN_PROCESS</span></td></tr> +<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> g_set_application_name (<span class='macro'>_(<span class='string_literal'>"Sticky Notes"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Sticky Notes", 5)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> gtk_window_set_default_icon_name (<span class='string_literal'>"mate-sticky-notes-applet"</span>);</td></tr> +<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> stickynotes->icon_normal =</td></tr> +<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> gtk_icon_theme_load_surface (gtk_icon_theme_get_default (),</td></tr> +<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='string_literal'>"mate-sticky-notes-applet"</span>,</td></tr> +<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> size, scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> stickynotes->icon_prelight =</td></tr> +<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> cairo_surface_create_similar (stickynotes->icon_normal,</td></tr> +<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> cairo_surface_get_content (stickynotes->icon_normal),</td></tr> +<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> cairo_image_surface_get_width (stickynotes->icon_normal),</td></tr> +<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> cairo_image_surface_get_height (stickynotes->icon_normal));</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"> stickynotes_make_prelight_icon (stickynotes->icon_prelight,</td></tr> +<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> stickynotes->icon_normal, 30);</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"> cr = cairo_create (stickynotes->icon_prelight);</td></tr> +<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> cairo_set_operator (cr, CAIRO_OPERATOR_DEST_IN);</td></tr> +<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> cairo_mask_surface (cr, stickynotes->icon_normal, 0, 0);</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"> stickynotes->settings = g_settings_new (<span class='macro'>STICKYNOTES_SCHEMA<span class='macro_popup'>"org.mate.stickynotes"</span></span>);</td></tr> +<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> stickynotes->visible = <span class='macro'>TRUE<span class='macro_popup'>(!(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"> stickynotes_applet_init_icons ();</td></tr> +<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> stickynotes_applet_init_prefs ();</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='comment'>/* Watch GSettings values */</span></td></tr> +<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> <span class='macro'>g_signal_connect (stickynotes->settings, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->settings), ("changed"<br>), (((GCallback) (preferences_apply_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_apply_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->settings), ("changed"<br>), (((GCallback) (preferences_apply_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</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='comment'>/* Max height for large notes in x11 only</span></td></tr> +<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='comment'>* In wayland we do not have access to global screen dimensions</span></td></tr> +<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='comment'>*/</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"> <span id="start9"><span id="end10">screen</span></span> = gtk_widget_get_screen (<span class='macro'>GTK_WIDGET (mate_panel_applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((mate_panel_applet)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"><span class='directive'>#ifdef GDK_WINDOWING_X11</span></td></tr> +<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> <span class='keyword'>if</span> (<span id="start2"><span id="start3"><span id="end3"><span id="start4"><span id="end4"><span id="start5"><span id="end5"><span id="start6"><span id="end6"><span class="mrange"><span id="start7"><span id="end7"><span id="start8"><span id="end8"><span id="end9"><span class='macro'>GDK_IS_X11_DISPLAY</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (gdk_screen_get_display (screen))<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(gdk_screen_get_display (screen))); GType __t = ((gdk_x11_display_get_type<br>())); gboolean __r; if (!__inst) __r = (0); else if (__inst-><br>g_class && __inst->g_class->g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming '__inst' is null</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">→</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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#EndPath" title="Next event (10)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> screen_height = <span class='macro'>HeightOfScreen (gdk_x11_screen_get_xscreen (screen))<span class='macro_popup'>((gdk_x11_screen_get_xscreen (screen))->height)</span></span> / scale;</td></tr> +<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"><span class='directive'>#endif</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"> <span id="start1"><span id="end2">stickynotes</span></span>->max_height = (<span class='keyword'>int</span>) (0.8 <span id="end0">*</span> (<span class='keyword'>double</span>) <span class="mrange"><span id="start0"><span id="end1">screen_height</span></span></span>);</td></tr> +<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:42ex"><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)">←</a></div></td><td>The right operand of '*' is a garbage value</td></tr></table></div></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='comment'>/* Load sticky notes */</span></td></tr> +<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> stickynotes_load (screen);</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"> install_check_click_on_desktop (screen);</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'>void</span></td></tr> +<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line">stickynotes_applet_init_prefs (<span class='keyword'>void</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"> </td></tr> +<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> stickynotes->builder = gtk_builder_new ();</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"> gtk_builder_add_from_resource (stickynotes->builder,</td></tr> +<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='macro'>GRESOURCE<span class='macro_popup'>"/org/mate/mate-applets/sticky-notes/"</span></span> <span class='string_literal'>"sticky-notes-preferences.ui"</span>,</td></tr> +<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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"> stickynotes->w_prefs =</td></tr> +<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "preferences_dialog"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> <span class='string_literal'><span class='macro'>"preferences_dialog"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "preferences_dialog"))))))</span></span>;</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"> stickynotes->w_prefs_width =</td></tr> +<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> gtk_spin_button_get_adjustment (<span class='macro'>GTK_SPIN_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkSpinButton*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_spin"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='string_literal'><span class='macro'>"width_spin"</span>))<span class='macro_popup'>((((GtkSpinButton*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_spin"))))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> stickynotes->w_prefs_height =</td></tr> +<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> gtk_spin_button_get_adjustment (<span class='macro'>GTK_SPIN_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkSpinButton*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_spin"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='string_literal'><span class='macro'>"height_spin"</span>))<span class='macro_popup'>((((GtkSpinButton*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_spin"))))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> stickynotes->w_prefs_color =</td></tr> +<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "default_color"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='string_literal'><span class='macro'>"default_color"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "default_color"))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> stickynotes->w_prefs_font_color =</td></tr> +<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_color"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_font_color"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_color"))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> stickynotes->w_prefs_sys_color =</td></tr> +<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> <span class='macro'>GTK_WIDGET (&GTK_CHECK_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "sys_color_check"<br>))))))->toggle_button)))))</span></span></td></tr> +<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> <span class='string_literal'><span class='macro'>"sys_color_check"</span>))->toggle_button)<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "sys_color_check"<br>))))))->toggle_button)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> stickynotes->w_prefs_font =</td></tr> +<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "default_font"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> <span class='string_literal'><span class='macro'>"default_font"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "default_font"))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> stickynotes->w_prefs_sys_font =</td></tr> +<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='macro'>GTK_WIDGET (&GTK_CHECK_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "sys_font_check"<br>))))))->toggle_button)))))</span></span></td></tr> +<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> <span class='string_literal'><span class='macro'>"sys_font_check"</span>))->toggle_button)<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "sys_font_check"<br>))))))->toggle_button)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> stickynotes->w_prefs_sticky =</td></tr> +<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> <span class='macro'>GTK_WIDGET (&GTK_CHECK_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "sticky_check"<br>))))))->toggle_button)))))</span></span></td></tr> +<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='string_literal'><span class='macro'>"sticky_check"</span>))->toggle_button)<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "sticky_check"<br>))))))->toggle_button)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> stickynotes->w_prefs_force =</td></tr> +<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> <span class='macro'>GTK_WIDGET (&GTK_CHECK_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "force_default_check"<br>))))))->toggle_button)))))</span></span></td></tr> +<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> <span class='string_literal'><span class='macro'>"force_default_check"</span>))->toggle_button)<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "force_default_check"<br>))))))->toggle_button)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> stickynotes->w_prefs_desktop =</td></tr> +<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='macro'>GTK_WIDGET (&GTK_CHECK_BUTTON (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "desktop_hide_check"<br>))))))->toggle_button)))))</span></span></td></tr> +<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> <span class='string_literal'><span class='macro'>"desktop_hide_check"</span>))->toggle_button)<span class='macro_popup'>((((GtkWidget*) (void *) ((&((((GtkCheckButton*) (void *)<br> ((gtk_builder_get_object (stickynotes->builder, "desktop_hide_check"<br>))))))->toggle_button)))))</span></span>;</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='macro'>g_signal_connect (stickynotes->w_prefs, <span class='string_literal'>"response"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs), ("response"<br>), (((GCallback) (preferences_response_cb))), (((void*)0)), (<br>(void*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_response_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs), ("response"<br>), (((GCallback) (preferences_response_cb))), (((void*)0)), (<br>(void*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> <span class='macro'>g_signal_connect (stickynotes->w_prefs, <span class='string_literal'>"delete-event"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs), ("delete-event"<br>), (((GCallback) (preferences_delete_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_delete_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs), ("delete-event"<br>), (((GCallback) (preferences_delete_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_width, <span class='string_literal'>"value-changed"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_width), ("value-changed"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_width), ("value-changed"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_height, <span class='string_literal'>"value-changed"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_height), ("value-changed"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_height), ("value-changed"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_sys_color, <span class='string_literal'>"toggled"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_sys_color), (<br>"toggled"), (((GCallback) (preferences_save_cb))), (((void*)0<br>)), ((void*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_sys_color), (<br>"toggled"), (((GCallback) (preferences_save_cb))), (((void*)0<br>)), ((void*)0), G_CONNECT_SWAPPED)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_sys_font, <span class='string_literal'>"toggled"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_sys_font), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_sys_font), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> <span class='macro'>g_signal_connect (stickynotes->w_prefs_color, <span class='string_literal'>"color-set"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_color), ("color-set"<br>), (((GCallback) (preferences_color_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_color_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_color), ("color-set"<br>), (((GCallback) (preferences_color_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='macro'>g_signal_connect (stickynotes->w_prefs_font_color, <span class='string_literal'>"color-set"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_font_color), (<br>"color-set"), (((GCallback) (preferences_color_cb))), (((void<br>*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_color_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_font_color), (<br>"color-set"), (((GCallback) (preferences_color_cb))), (((void<br>*)0)), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='macro'>g_signal_connect (stickynotes->w_prefs_font, <span class='string_literal'>"font-set"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_font), ("font-set"<br>), (((GCallback) (preferences_font_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_font_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_font), ("font-set"<br>), (((GCallback) (preferences_font_cb))), (((void*)0)), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_sticky, <span class='string_literal'>"toggled"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_sticky), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_sticky), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_force, <span class='string_literal'>"toggled"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_force), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_force), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='macro'>g_signal_connect_swapped (stickynotes->w_prefs_desktop, <span class='string_literal'>"toggled"</span>,<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_desktop), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span></td></tr> +<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span class='macro'>G_CALLBACK (preferences_save_cb), NULL)<span class='macro_popup'>g_signal_connect_data ((stickynotes->w_prefs_desktop), ("toggled"<br>), (((GCallback) (preferences_save_cb))), (((void*)0)), ((void<br>*)0), G_CONNECT_SWAPPED)</span></span>;</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"> {</td></tr> +<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> GtkSizeGroup *group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);</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"> gtk_size_group_add_widget (group,</td></tr> +<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> <span class='string_literal'><span class='macro'>"width_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_label"))))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> gtk_size_group_add_widget (group,</td></tr> +<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='string_literal'><span class='macro'>"height_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_label"))))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> gtk_size_group_add_widget (group,</td></tr> +<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_color_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_color_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_color_label"))))))</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"> g_object_unref (group);</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"> </td></tr> +<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-width"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='string_literal'><span class='macro'>"width_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='macro'>FALSE<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"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_spin"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='string_literal'><span class='macro'>"width_spin"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "width_spin"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(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"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-height"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='string_literal'><span class='macro'>"height_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <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"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_spin"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='string_literal'><span class='macro'>"height_spin"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "height_spin"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</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"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-color"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_color_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_color_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_color_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_color, <span class='macro'>FALSE<span class='macro_popup'>(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"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-font-color"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_color_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_font_color_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_color_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_font_color, <span class='macro'>FALSE<span class='macro_popup'>(0)</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"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"use-system-color"</span>))</td></tr> +<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_sys_color, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-font"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_font_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_font, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"use-system-font"</span>))</td></tr> +<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_sys_font, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"sticky"</span>))</td></tr> +<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_sticky, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='keyword'>if</span> (!g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"force-default"</span>))</td></tr> +<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_force, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></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"> stickynotes_applet_update_prefs ();</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='comment'>/* Create a Sticky Notes applet */</span></td></tr> +<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line">StickyNotesApplet *</td></tr> +<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line">stickynotes_applet_new (MatePanelApplet *mate_panel_applet)</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"> AtkObject *atk_obj;</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'>/* Create Sticky Notes Applet */</span></td></tr> +<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> StickyNotesApplet *applet = <span class='macro'>g_new (StickyNotesApplet, 1)<span class='macro_popup'>(StickyNotesApplet *) (__extension__ ({ gsize __n = (gsize) (<br>1); gsize __s = sizeof (StickyNotesApplet); gpointer __p; if (<br>__s == 1) __p = g_malloc (__n); else if (__builtin_constant_p<br> (__n) && (__s == 0 || __n <= (9223372036854775807L<br> *2UL+1UL) / __s)) __p = g_malloc (__n * __s); else __p = g_malloc_n<br> (__n, __s); __p; }))</span></span>;</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='comment'>/* Initialize Sticky Notes Applet */</span></td></tr> +<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> applet->w_applet = <span class='macro'>GTK_WIDGET (mate_panel_applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((mate_panel_applet)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> applet->w_image = gtk_image_new ();</td></tr> +<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> applet->destroy_all_dialog = <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"> applet->prelighted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></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"> applet->menu_tip = <span class='macro'>NULL<span class='macro_popup'>((void*)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'>/* Expand the applet for Fitts' law complience. */</span></td></tr> +<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> mate_panel_applet_set_flags (mate_panel_applet,</td></tr> +<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> MATE_PANEL_APPLET_EXPAND_MINOR);</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='comment'>/* Add the applet icon */</span></td></tr> +<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (mate_panel_applet)<span class='macro_popup'>((((GtkContainer*) (void *) ((mate_panel_applet)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> applet->w_image);</td></tr> +<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> applet->panel_size = mate_panel_applet_get_size (mate_panel_applet);</td></tr> +<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> applet->panel_orient = mate_panel_applet_get_orient (mate_panel_applet);</td></tr> +<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> stickynotes_applet_update_icon (applet);</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"> <span class='comment'>/* Add the popup menu */</span></td></tr> +<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> applet->action_group = gtk_action_group_new (<span class='string_literal'>"StickyNotes Applet Actions"</span>);</td></tr> +<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> gtk_action_group_set_translation_domain (applet->action_group,</td></tr> +<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='macro'>GETTEXT_PACKAGE<span class='macro_popup'>"mate-applets"</span></span>);</td></tr> +<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> gtk_action_group_add_actions (applet->action_group,</td></tr> +<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> stickynotes_applet_menu_actions,</td></tr> +<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span class='macro'>G_N_ELEMENTS (stickynotes_applet_menu_actions)<span class='macro_popup'>(sizeof (stickynotes_applet_menu_actions) / sizeof ((stickynotes_applet_menu_actions<br>)[0]))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> applet);</td></tr> +<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> gtk_action_group_add_toggle_actions (applet->action_group,</td></tr> +<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> stickynotes_applet_menu_toggle_actions,</td></tr> +<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>G_N_ELEMENTS (stickynotes_applet_menu_toggle_actions)<span class='macro_popup'>(sizeof (stickynotes_applet_menu_toggle_actions) / sizeof ((stickynotes_applet_menu_toggle_actions<br>)[0]))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> applet);</td></tr> +<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> mate_panel_applet_setup_menu_from_resource (mate_panel_applet,</td></tr> +<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='macro'>GRESOURCE<span class='macro_popup'>"/org/mate/mate-applets/sticky-notes/"</span></span> <span class='string_literal'>"menu.xml"</span>,</td></tr> +<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> applet->action_group);</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'>if</span> (mate_panel_applet_get_locked_down (mate_panel_applet)) {</td></tr> +<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> GtkAction *action;</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"> action = gtk_action_group_get_action (applet->action_group,</td></tr> +<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='string_literal'>"preferences"</span>);</td></tr> +<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> gtk_action_set_visible (action, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</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"> </td></tr> +<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='comment'>/* Connect all signals for applet management */</span></td></tr> +<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"button-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("button-press-event"<br>), (((GCallback) (applet_button_cb))), (applet), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='macro'>G_CALLBACK (applet_button_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("button-press-event"<br>), (((GCallback) (applet_button_cb))), (applet), ((void*)0), (<br>GConnectFlags) 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_signal_connect (applet->w_applet, <span class='string_literal'>"key-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("key-press-event"<br>), (((GCallback) (applet_key_cb))), (applet), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='macro'>G_CALLBACK (applet_key_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("key-press-event"<br>), (((GCallback) (applet_key_cb))), (applet), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"focus-in-event"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("focus-in-event"<br>), (((GCallback) (applet_focus_cb))), (applet), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='macro'>G_CALLBACK (applet_focus_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("focus-in-event"<br>), (((GCallback) (applet_focus_cb))), (applet), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"focus-out-event"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("focus-out-event"<br>), (((GCallback) (applet_focus_cb))), (applet), ((void*)0), (<br>GConnectFlags) 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 (applet_focus_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("focus-out-event"<br>), (((GCallback) (applet_focus_cb))), (applet), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"enter-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("enter-notify-event"<br>), (((GCallback) (applet_cross_cb))), (applet), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='macro'>G_CALLBACK (applet_cross_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("enter-notify-event"<br>), (((GCallback) (applet_cross_cb))), (applet), ((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_signal_connect (applet->w_applet, <span class='string_literal'>"leave-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("leave-notify-event"<br>), (((GCallback) (applet_cross_cb))), (applet), ((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"> <span class='macro'>G_CALLBACK (applet_cross_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("leave-notify-event"<br>), (((GCallback) (applet_cross_cb))), (applet), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"size-allocate"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("size-allocate"<br>), (((GCallback) (applet_size_allocate_cb))), (applet), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>G_CALLBACK (applet_size_allocate_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("size-allocate"<br>), (((GCallback) (applet_size_allocate_cb))), (applet), ((void<br>*)0), (GConnectFlags) 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_signal_connect (applet->w_applet, <span class='string_literal'>"change-orient"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("change-orient"<br>), (((GCallback) (applet_change_orient_cb))), (applet), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> <span class='macro'>G_CALLBACK (applet_change_orient_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("change-orient"<br>), (((GCallback) (applet_change_orient_cb))), (applet), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"destroy"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("destroy"), ((<br>(GCallback) (applet_destroy_cb))), (applet), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> <span class='macro'>G_CALLBACK (applet_destroy_cb), applet)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("destroy"), ((<br>(GCallback) (applet_destroy_cb))), (applet), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> <span class='macro'>g_signal_connect (applet->w_applet, <span class='string_literal'>"destroy"</span>,<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("destroy"), ((<br>(GCallback) (stickynotes_destroy))), (((void*)0)), ((void*)0)<br>, (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> <span class='macro'>G_CALLBACK (stickynotes_destroy), NULL)<span class='macro_popup'>g_signal_connect_data ((applet->w_applet), ("destroy"), ((<br>(GCallback) (stickynotes_destroy))), (((void*)0)), ((void*)0)<br>, (GConnectFlags) 0)</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"> atk_obj = gtk_widget_get_accessible (applet->w_applet);</td></tr> +<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> atk_object_set_name (atk_obj, <span class='macro'>_(<span class='string_literal'>"Sticky Notes"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Sticky Notes", 5)</span></span>);</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'>/* Show the applet */</span></td></tr> +<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> gtk_widget_show_all (applet->w_applet);</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'>return</span> applet;</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"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">stickynotes_applet_update_icon (StickyNotesApplet *applet)</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"> cairo_t *cr;</td></tr> +<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> cairo_surface_t *surface;</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"> gint size = applet->panel_size;</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"> <span class='keyword'>if</span> (size > 3)</td></tr> +<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> size = size - 3;</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='comment'>/* Choose appropriate icon and size it */</span></td></tr> +<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='keyword'>if</span> (applet->prelighted)</td></tr> +<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> surface = cairo_surface_create_similar (stickynotes->icon_prelight,</td></tr> +<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> cairo_surface_get_content (stickynotes->icon_prelight),</td></tr> +<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> size, size);</td></tr> +<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> surface = cairo_surface_create_similar (stickynotes->icon_normal,</td></tr> +<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> cairo_surface_get_content (stickynotes->icon_normal),</td></tr> +<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> size, size);</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"> cr = cairo_create (surface);</td></tr> +<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> cairo_set_source_surface (cr, applet->prelighted ? stickynotes->icon_prelight : stickynotes->icon_normal, 0, 0);</td></tr> +<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> cairo_paint (cr);</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"> <span class='comment'>/* Apply the finished surface to the applet image */</span></td></tr> +<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> gtk_image_set_from_surface (<span class='macro'>GTK_IMAGE (applet->w_image)<span class='macro_popup'>((((GtkImage*) (void *) ((applet->w_image)))))</span></span>, surface);</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"> cairo_surface_destroy (surface);</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"> </td></tr> +<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line">stickynotes_applet_update_prefs (<span class='keyword'>void</span>)</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"> gint width, height;</td></tr> +<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> gboolean sys_color, sys_font, sticky, force_default, desktop_hide;</td></tr> +<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>char</span> *font_str;</td></tr> +<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>char</span> *color_str, *font_color_str;</td></tr> +<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> GdkRGBA color, font_color;</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"> width = g_settings_get_int (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='string_literal'>"default-width"</span>);</td></tr> +<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> width = <span class='macro'>MAX (width, 1)<span class='macro_popup'>(((width) > (1)) ? (width) : (1))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> height = g_settings_get_int (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='string_literal'>"default-height"</span>);</td></tr> +<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> height = <span class='macro'>MAX (height, 1)<span class='macro_popup'>(((height) > (1)) ? (height) : (1))</span></span>;</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"> sys_color = g_settings_get_boolean (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='string_literal'>"use-system-color"</span>);</td></tr> +<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> sys_font = g_settings_get_boolean (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='string_literal'>"use-system-font"</span>);</td></tr> +<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> sticky = g_settings_get_boolean (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='string_literal'>"sticky"</span>);</td></tr> +<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> force_default = g_settings_get_boolean (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> <span class='string_literal'>"force-default"</span>);</td></tr> +<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> desktop_hide = g_settings_get_boolean (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='string_literal'>"desktop-hide"</span>);</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"> font_str = g_settings_get_string (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> <span class='string_literal'>"default-font"</span>);</td></tr> +<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> <span class='keyword'>if</span> (!font_str)</td></tr> +<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> font_str = <span class='macro'>g_strdup (<span class='string_literal'>"Sans 10"</span>)<span class='macro_popup'>g_strdup_inline ("Sans 10")</span></span>;</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"> color_str = g_settings_get_string (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='string_literal'>"default-color"</span>);</td></tr> +<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='keyword'>if</span> (!color_str)</td></tr> +<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> color_str = <span class='macro'>g_strdup (<span class='string_literal'>"#ECF833"</span>)<span class='macro_popup'>g_strdup_inline ("#ECF833")</span></span>;</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"> font_color_str = g_settings_get_string (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> <span class='string_literal'>"default-font-color"</span>);</td></tr> +<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>if</span> (!font_color_str)</td></tr> +<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> font_color_str = <span class='macro'>g_strdup (<span class='string_literal'>"#000000"</span>)<span class='macro_popup'>g_strdup_inline ("#000000")</span></span>;</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"> gdk_rgba_parse (&color, color_str);</td></tr> +<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> gdk_rgba_parse (&font_color, font_color_str);</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"> g_free (color_str);</td></tr> +<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> g_free (font_color_str);</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"> gtk_adjustment_set_value (stickynotes->w_prefs_width, width);</td></tr> +<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> gtk_adjustment_set_value (stickynotes->w_prefs_height, height);</td></tr> +<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> gtk_toggle_button_set_active (<span class='macro'>GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sys_color)<span class='macro_popup'>((((GtkToggleButton*) (void *) ((stickynotes->w_prefs_sys_color<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> sys_color);</td></tr> +<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> gtk_toggle_button_set_active (<span class='macro'>GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sys_font)<span class='macro_popup'>((((GtkToggleButton*) (void *) ((stickynotes->w_prefs_sys_font<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> sys_font);</td></tr> +<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> gtk_toggle_button_set_active (<span class='macro'>GTK_TOGGLE_BUTTON (stickynotes->w_prefs_sticky)<span class='macro_popup'>((((GtkToggleButton*) (void *) ((stickynotes->w_prefs_sticky<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> sticky);</td></tr> +<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> gtk_toggle_button_set_active (<span class='macro'>GTK_TOGGLE_BUTTON (stickynotes->w_prefs_force)<span class='macro_popup'>((((GtkToggleButton*) (void *) ((stickynotes->w_prefs_force<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> force_default);</td></tr> +<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> gtk_toggle_button_set_active (<span class='macro'>GTK_TOGGLE_BUTTON (stickynotes->w_prefs_desktop)<span class='macro_popup'>((((GtkToggleButton*) (void *) ((stickynotes->w_prefs_desktop<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> desktop_hide);</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"> gtk_color_chooser_set_rgba (<span class='macro'>GTK_COLOR_CHOOSER (stickynotes->w_prefs_color)<span class='macro_popup'>((((GtkColorChooser*) (void *) ((stickynotes->w_prefs_color<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> &color);</td></tr> +<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> gtk_color_chooser_set_rgba (<span class='macro'>GTK_COLOR_CHOOSER (stickynotes->w_prefs_font_color)<span class='macro_popup'>((((GtkColorChooser*) (void *) ((stickynotes->w_prefs_font_color<br>)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> &font_color);</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"> gtk_font_button_set_font_name (<span class='macro'>GTK_FONT_BUTTON (stickynotes->w_prefs_font)<span class='macro_popup'>((((GtkFontButton*) (void *) ((stickynotes->w_prefs_font))<br>)))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> font_str);</td></tr> +<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> g_free (font_str);</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"> <span class='keyword'>if</span> (g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-color"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_color_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_color_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_color_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> !sys_color);</td></tr> +<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_color, !sys_color);</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"> <span class='keyword'>if</span> (g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-font-color"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_color_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_font_color_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_color_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> !sys_color);</td></tr> +<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_font_color, !sys_color);</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'>if</span> (g_settings_is_writable (stickynotes->settings, <span class='string_literal'>"default-font"</span>)) {</td></tr> +<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> gtk_widget_set_sensitive (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (stickynotes->builder,<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_label"))))))</span></span></td></tr> +<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='string_literal'><span class='macro'>"prefs_font_label"</span>))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (stickynotes<br>->builder, "prefs_font_label"))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> !sys_font);</td></tr> +<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> gtk_widget_set_sensitive (stickynotes->w_prefs_font, !sys_font);</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'>void</span></td></tr> +<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line">stickynotes_applet_update_menus (<span class='keyword'>void</span>)</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"> GList *l;</td></tr> +<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> gboolean inconsistent = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</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"> gboolean locked = g_settings_get_boolean (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> <span class='string_literal'>"locked"</span>);</td></tr> +<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> gboolean locked_writable = g_settings_is_writable (stickynotes->settings,</td></tr> +<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> <span class='string_literal'>"locked"</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"> <span class='keyword'>for</span> (l = stickynotes->notes; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l->next) {</td></tr> +<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> StickyNote *note = l->data;</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='keyword'>if</span> (note->locked != locked) {</td></tr> +<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> inconsistent = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>break</span>;</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"> }</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"> <span class='keyword'>for</span> (l = stickynotes->applets; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l->next) {</td></tr> +<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> StickyNotesApplet *applet = l->data;</td></tr> +<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> GSList *proxies, *p;</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"> GtkAction *action = gtk_action_group_get_action (applet->action_group,</td></tr> +<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> <span class='string_literal'>"lock"</span>);</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"> g_object_set (action,</td></tr> +<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='string_literal'>"active"</span>, locked,</td></tr> +<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> <span class='string_literal'>"sensitive"</span>, locked_writable,</td></tr> +<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</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"> proxies = gtk_action_get_proxies (action);</td></tr> +<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='keyword'>for</span> (p = proxies; p; p = <span class='macro'>g_slist_next (p)<span class='macro_popup'>((p) ? (((GSList *)(p))->next) : ((void*)0))</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_CHECK_MENU_ITEM (p->data)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(p->data)); GType __t = ((gtk_check_menu_item_get_type ())<br>); gboolean __r; if (!__inst) __r = (0); else if (__inst-><br>g_class && __inst->g_class->g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr> +<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> gtk_check_menu_item_set_inconsistent (<span class='macro'>GTK_CHECK_MENU_ITEM (p->data)<span class='macro_popup'>((((GtkCheckMenuItem*) (void *) ((p->data)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> inconsistent);</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">}</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'>void</span></td></tr> +<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line">stickynotes_applet_update_tooltips (<span class='keyword'>void</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"> <span class='keyword'>int</span> num;</td></tr> +<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='keyword'>char</span> *tooltip, *no_notes;</td></tr> +<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> StickyNotesApplet *applet;</td></tr> +<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> GList *l;</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"> num = g_list_length (stickynotes->notes);</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"> no_notes = g_strdup_printf (<span class='macro'>ngettext (<span class='string_literal'>"%d note"</span>,<span class='macro_popup'>dcngettext (((void*)0), "%d note", "%d notes", num, 5)</span></span></td></tr> +<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> <span class='string_literal'><span class='macro'>"%d notes"</span>,<span class='macro_popup'>dcngettext (((void*)0), "%d note", "%d notes", num, 5)</span></span></td></tr> +<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> <span class='macro'>num)<span class='macro_popup'>dcngettext (((void*)0), "%d note", "%d notes", num, 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> num);</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"> tooltip = g_strdup_printf (<span class='string_literal'>"%s\n%s"</span>,</td></tr> +<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Show sticky notes"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Show sticky notes", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> no_notes);</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'>for</span> (l = stickynotes->applets; l; l = l->next)</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"> applet = l->data;</td></tr> +<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> gtk_widget_set_tooltip_text (applet->w_applet,</td></tr> +<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> tooltip);</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'>if</span> (applet->menu_tip)</td></tr> +<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (gtk_bin_get_child (GTK_BIN (applet->menu_tip)))<span class='macro_popup'>((((GtkLabel*) (void *) ((gtk_bin_get_child (((((GtkBin*) (void<br> *) ((applet->menu_tip)))))))))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> no_notes);</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"> </td></tr> +<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> g_free (tooltip);</td></tr> +<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> g_free (no_notes);</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"> </td></tr> +<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line">stickynotes_applet_panel_icon_get_geometry (<span class='keyword'>int</span> *x,</td></tr> +<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='keyword'>int</span> *y,</td></tr> +<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>int</span> *width,</td></tr> +<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> <span class='keyword'>int</span> *height)</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"> GtkWidget *widget;</td></tr> +<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> GtkAllocation allocation;</td></tr> +<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> GtkRequisition requisition;</td></tr> +<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> StickyNotesApplet *applet;</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"> applet = stickynotes->applets->data;</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"> widget = <span class='macro'>GTK_WIDGET (applet->w_image)<span class='macro_popup'>((((GtkWidget*) (void *) ((applet->w_image)))))</span></span>;</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"> gtk_widget_get_preferred_size (widget,</td></tr> +<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &requisition);</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"> gdk_window_get_origin (gtk_widget_get_window (widget), x, y);</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"> gtk_widget_get_allocation (widget, &allocation);</td></tr> +<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> *width = allocation.x;</td></tr> +<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> *height = allocation.y;</td></tr> +<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line">}</td></tr> +</table></body></html> diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-3faa94.html b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-3faa94.html new file mode 100644 index 00000000..2073e2b7 --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-3faa94.html @@ -0,0 +1,1169 @@ +<!doctype html> +<html> +<head> +<title>apmlib.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 Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 --> + +<!-- BUGTYPE Potential insecure memory buffer bounds restriction in call 'strcpy' --> + +<!-- BUGCATEGORY Security --> + +<!-- BUGFILE /rootdir/battstat/apmlib/apmlib.c --> + +<!-- FILENAME apmlib.c --> + +<!-- FUNCTIONNAME apm_read --> + +<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 3faa945b15ad07b29d7fe730c366b4ba --> + +<!-- BUGLINE 89 --> + +<!-- BUGCOLUMN 5 --> + +<!-- BUGPATHLENGTH 1 --> + +<!-- BUGMETAEND --> +<!-- REPORTHEADER --> +<h3>Bug Summary</h3> +<table class="simpletable"> +<tr><td class="rowname">File:</td><td>battstat/apmlib/apmlib.c</td></tr> +<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 89, column 5</a><br />Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119</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 apmlib.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=none -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/battstat/apmlib -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I ../../apmlib -D G_LOG_DOMAIN="battstat_applet" -D PIC -internal-isystem /usr/lib64/clang/16/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 -O2 -fdebug-compilation-dir=/rootdir/battstat/apmlib -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -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/2023-10-08-232600-14316-1 -x c apmlib.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": {"89": 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'>/* apmlib.c -- Sample APM interface routines</span></td></tr> +<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Created: Mon Jan 8 10:28:16 1996 by [email protected]</span></td></tr> +<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Revised: Fri Dec 26 21:38:29 1997 by [email protected]</span></td></tr> +<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* Copyright 1996, 1997 Rickard E. Faith ([email protected])</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 library is free software; you can redistribute it and/or modify it</span></td></tr> +<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* under the terms of the GNU Library General Public License as published</span></td></tr> +<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* by the Free Software Foundation; either version 2 of the License, or (at</span></td></tr> +<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* 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 library is distributed in the hope that it will be useful, but</span></td></tr> +<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* 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 GNU</span></td></tr> +<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* Library 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 Library 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 along with this library; if not, write to the Free Software</span></td></tr> +<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='directive'>#include <stdio.h></span></td></tr> +<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"><span class='directive'>#include <stdlib.h></span></td></tr> +<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include <unistd.h></span></td></tr> +<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include <string.h></span></td></tr> +<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include <fcntl.h></span></td></tr> +<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include <ctype.h></span></td></tr> +<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include <sys/stat.h></span></td></tr> +<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include <sys/time.h></span></td></tr> +<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include <sys/ioctl.h></span></td></tr> +<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include <sys/types.h></span></td></tr> +<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include <sys/sysmacros.h></span></td></tr> +<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "apm.h"</span></td></tr> +<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#define <span class='macro'>BACKWARD_COMPAT<span class='macro_popup'>1</span></span> 1</span></td></tr> +<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='comment'>/* If APM support of the right version exists in kernel, return zero.</span></td></tr> +<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> <span class='comment'>* Otherwise, return 1 if no support exists, or 2 if it is the wrong</span></td></tr> +<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> <span class='comment'>* version. *NOTE* The sense of the return value is not intuitive.</span></td></tr> +<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line">apm_exists (<span class='keyword'>void</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"> apm_info i;</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='keyword'>if</span> (access (<span class='macro'>APM_PROC<span class='macro_popup'>"/proc/apm"</span></span>, <span class='macro'>R_OK<span class='macro_popup'>4</span></span>))</td></tr> +<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> <span class='keyword'>return</span> 1;</td></tr> +<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='keyword'>return</span> apm_read (&i);</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"> </td></tr> +<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='comment'>/* Read information from /proc/apm. Return 0 on success, 1 if APM not</span></td></tr> +<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='comment'>* installed, 2 if APM installed, but old version.</span> </td></tr> +<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line">apm_read (apm_info * i)</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"> FILE *str;</td></tr> +<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='keyword'>char</span> units[10];</td></tr> +<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> <span class='keyword'>char</span> buffer[100];</td></tr> +<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> <span class='keyword'>int</span> retcode = 0;</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='keyword'>if</span> (!(str = fopen (<span class='macro'>APM_PROC<span class='macro_popup'>"/proc/apm"</span></span>, <span class='string_literal'>"r"</span>)))</td></tr> +<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> <span class='keyword'>return</span> 1;</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='keyword'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> printf (<span class='string_literal'>"fgets error\n"</span>);</td></tr> +<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> buffer[<span class='keyword'>sizeof</span> (buffer) - 1] = '\0';</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"> <span class='comment'>/* Should check for other driver versions; driver 1.9 (and some</span></td></tr> +<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>* others) uses this format, which doesn't expose # batteries.</span></td></tr> +<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> sscanf (buffer, <span class='string_literal'>"%s %d.%d %hx %hx %hx %hx %d%% %d %s\n"</span>,</td></tr> +<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> (<span class='keyword'>char</span> *) i->driver_version,</td></tr> +<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> &i->apm_version_major,</td></tr> +<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> &i->apm_version_minor,</td></tr> +<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> &i->apm_flags,</td></tr> +<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> &i->ac_line_status,</td></tr> +<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> &i->battery_status,</td></tr> +<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> &i->battery_flags,</td></tr> +<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> &i->battery_percentage,</td></tr> +<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> &i->battery_time,</td></tr> +<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> units);</td></tr> +<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> i->using_minutes = !strncmp (units, <span class='string_literal'>"min"</span>, 3) ? 1 : 0;</td></tr> +<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> <span class='keyword'>if</span> (i->driver_version[0] == 'B')</td></tr> +<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> { <span class='comment'>/* old style. argh. */</span></td></tr> +<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='directive'>#if !<span class='macro'>BACKWARD_COMPAT<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> retcode = 2;</td></tr> +<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='directive'>#else</span></td></tr> +<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class="mrange">strcpy</span> ((<span class='keyword'>char</span> *) i->driver_version, <span class='string_literal'>"pre-0.7"</span>);</td></tr> +<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:5ex; max-width:52em">Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119</div></td></tr> +<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> i->apm_version_major = 0;</td></tr> +<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> i->apm_version_minor = 0;</td></tr> +<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> i->apm_flags = 0;</td></tr> +<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> i->ac_line_status = 0xff;</td></tr> +<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> i->battery_status = 0xff;</td></tr> +<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> i->battery_flags = 0xff;</td></tr> +<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> i->battery_percentage = -1;</td></tr> +<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> i->battery_time = -1;</td></tr> +<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> i->using_minutes = 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"> sscanf (buffer, <span class='string_literal'>"BIOS version: %d.%d"</span>,</td></tr> +<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> &i->apm_version_major, &i->apm_version_minor);</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"> <span class='keyword'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> printf (<span class='string_literal'>"fgets error\n"</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"> sscanf (buffer, <span class='string_literal'>"Flags: 0x%02hx"</span>, &i->apm_flags);</td></tr> +<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='keyword'>if</span> (i->apm_flags & <span class='macro'>APM_32_BIT_SUPPORT<span class='macro_popup'>0x0002</span></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='keyword'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> printf (<span class='string_literal'>"fgets error\n"</span>);</td></tr> +<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='keyword'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> printf (<span class='string_literal'>"fgets error\n"</span>);</td></tr> +<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>if</span> (buffer[0] != 'P')</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'>if</span> (!strncmp (buffer + 4, <span class='string_literal'>"off line"</span>, 8))</td></tr> +<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> i->ac_line_status = 0;</td></tr> +<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strncmp (buffer + 4, <span class='string_literal'>"on line"</span>, 7))</td></tr> +<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> i->ac_line_status = 1;</td></tr> +<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strncmp (buffer + 4, <span class='string_literal'>"on back"</span>, 7))</td></tr> +<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> i->ac_line_status = 2;</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'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <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"> printf (<span class='string_literal'>"fgets error\n"</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"> <span class='keyword'>if</span> (!strncmp (buffer + 16, <span class='string_literal'>"high"</span>, 4))</td></tr> +<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> i->battery_status = 0;</td></tr> +<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strncmp (buffer + 16, <span class='string_literal'>"low"</span>, 3))</td></tr> +<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> i->battery_status = 1;</td></tr> +<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strncmp (buffer + 16, <span class='string_literal'>"crit"</span>, 4))</td></tr> +<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> i->battery_status = 2;</td></tr> +<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!strncmp (buffer + 16, <span class='string_literal'>"charg"</span>, 5))</td></tr> +<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> i->battery_status = 3;</td></tr> +<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> <span class='keyword'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> printf (<span class='string_literal'>"fgets error\n"</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> (strncmp (buffer + 14, <span class='string_literal'>"unknown"</span>, 7))</td></tr> +<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> i->battery_percentage = atoi (buffer + 14);</td></tr> +<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>if</span> (i->apm_version_major >= 1 && i->apm_version_minor >= 1)</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> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, 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"> printf (<span class='string_literal'>"fgets error\n"</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"> sscanf (buffer, <span class='string_literal'>"Battery flag: 0x%02hx"</span>, &i->battery_flags);</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'>if</span> (fgets (buffer, <span class='keyword'>sizeof</span> (buffer) - 1, str) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> printf (<span class='string_literal'>"fgets error\n"</span>);</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'>if</span> (strncmp (buffer + 14, <span class='string_literal'>"unknown"</span>, 7))</td></tr> +<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> i->battery_time = atoi (buffer + 14);</td></tr> +<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> }</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"> }</td></tr> +<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"><span class='directive'>#endif</span></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"> </td></tr> +<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='comment'>/* Fix possible kernel bug -- percentage</span></td></tr> +<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> <span class='comment'>* set to 0xff (==255) instead of -1.</span> </td></tr> +<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='keyword'>if</span> (i->battery_percentage > 100)</td></tr> +<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> i->battery_percentage = -1;</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"> fclose (str);</td></tr> +<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>return</span> retcode;</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"> </td></tr> +<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"><span class='comment'>/* Lookup the device number for the apm_bios device. */</span></td></tr> +<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line">dev_t apm_dev (<span class='keyword'>void</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"> FILE *str;</td></tr> +<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='keyword'>static</span> <span class='keyword'>int</span> cached = -1;</td></tr> +<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span class='keyword'>char</span> buf[80];</td></tr> +<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>char</span> *pt;</td></tr> +<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> apm_info i;</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='keyword'>if</span> (cached >= 0)</td></tr> +<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>return</span> cached;</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"> <span class='keyword'>if</span> (access (<span class='macro'>APM_PROC<span class='macro_popup'>"/proc/apm"</span></span>, <span class='macro'>R_OK<span class='macro_popup'>4</span></span>) || apm_read (&i) == 1)</td></tr> +<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> <span class='keyword'>return</span> cached = -1;</td></tr> +<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (i.driver_version[0] == '1')</td></tr> +<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='keyword'>return</span> cached = <span class='macro'>makedev (10, 134)<span class='macro_popup'>gnu_dev_makedev (10, 134)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='keyword'>if</span> (!(str = fopen (<span class='macro'>APM_DEV<span class='macro_popup'>"/proc/devices"</span></span>, <span class='string_literal'>"r"</span>)))</td></tr> +<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr> +<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='keyword'>while</span> (fgets (buf, <span class='keyword'>sizeof</span> (buf) - 1, str))</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"> buf[<span class='keyword'>sizeof</span> (buf) - 1] = '\0';</td></tr> +<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='keyword'>for</span> (pt = buf; *pt && <span class='macro'>isspace (*pt)<span class='macro_popup'>((*__ctype_b_loc ())[(int) ((*pt))] & (unsigned short int<br>) _ISspace)</span></span>; ++pt); <span class='comment'>/* skip leading spaces */</span></td></tr> +<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>for</span> (; *pt && !<span class='macro'>isspace (*pt)<span class='macro_popup'>((*__ctype_b_loc ())[(int) ((*pt))] & (unsigned short int<br>) _ISspace)</span></span>; ++pt); <span class='comment'>/* find next space */</span></td></tr> +<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>isspace (*pt)<span class='macro_popup'>((*__ctype_b_loc ())[(int) ((*pt))] & (unsigned short int<br>) _ISspace)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> {</td></tr> +<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> *pt++ = '\0';</td></tr> +<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> pt[strlen (pt) - 1] = '\0'; <span class='comment'>/* get rid of newline */</span></td></tr> +<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='keyword'>if</span> (!strcmp (pt, <span class='macro'>APM_NAME<span class='macro_popup'>"apm_bios"</span></span>))</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"> fclose (str);</td></tr> +<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>return</span> cached = <span class='macro'>makedev (atoi (buf), 0)<span class='macro_popup'>gnu_dev_makedev (atoi (buf), 0)</span></span>;</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"> }</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"> fclose (str);</td></tr> +<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='keyword'>return</span> cached = -1;</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"> </td></tr> +<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"><span class='comment'>/* Return a file descriptor for the apm_bios device, or -1 if there is an</span></td></tr> +<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> <span class='comment'>* error. Is this method secure? Should we make the device in /dev</span></td></tr> +<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='comment'>* instead of /tmp?</span> </td></tr> +<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> <span class='comment'>* apenwarr 2001/05/11: just throw out the weird temporary device file stuff.</span></td></tr> +<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='comment'>* It was only for ancient kernel versions anyway.</span></td></tr> +<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line">apm_open (<span class='keyword'>void</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"> <span class='keyword'>int</span> fd;</td></tr> +<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> apm_info i;</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'>if</span> (access (<span class='macro'>APM_PROC<span class='macro_popup'>"/proc/apm"</span></span>, <span class='macro'>R_OK<span class='macro_popup'>4</span></span>) || apm_read (&i) == 1)</td></tr> +<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr> +<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> <span class='keyword'>if</span> (i.driver_version[0] >= '1')</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"> <span class='keyword'>if</span> ((fd = open (<span class='macro'>APM_DEVICE<span class='macro_popup'>"/dev/apm_bios"</span></span>, <span class='macro'>O_RDWR<span class='macro_popup'>02</span></span>)) < 0)</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"> <span class='comment'>/* Try to create it. This is reasonable</span></td></tr> +<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='comment'>* for backward compatibility.</span></td></tr> +<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='keyword'>if</span> (mknod (<span class='macro'>APM_DEVICE<span class='macro_popup'>"/dev/apm_bios"</span></span>, <span class='macro'>S_IFCHR<span class='macro_popup'>0020000</span></span> | <span class='macro'>S_IRUSR<span class='macro_popup'>0400</span></span> | <span class='macro'>S_IWUSR<span class='macro_popup'>0200</span></span>, apm_dev ()))</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"> unlink (<span class='macro'>APM_DEVICE<span class='macro_popup'>"/dev/apm_bios"</span></span>);</td></tr> +<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='keyword'>return</span> -1;</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"> fd = open (<span class='macro'>APM_DEVICE<span class='macro_popup'>"/dev/apm_bios"</span></span>, <span class='macro'>O_RDWR<span class='macro_popup'>02</span></span>);</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"> <span class='keyword'>return</span> fd;</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'>return</span> -1;</td></tr> +<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">}</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"><span class='comment'>/* Given a file descriptor for the apm_bios device, close it. */</span></td></tr> +<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line">apm_close (<span class='keyword'>int</span> fd)</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> close (fd);</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='comment'>/* Given a file descriptor for the apm_bios device, this routine will wait</span></td></tr> +<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='comment'>* timeout seconds for APM events. Up to n events will be placed in the</span></td></tr> +<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='comment'>* events queue. The return code will indicate the number of events</span></td></tr> +<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='comment'>* stored. Since this routine uses select (2), it will return if an</span></td></tr> +<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> <span class='comment'>* unblocked signal is caught. A timeout < 0 means to block indefinately.</span></td></tr> +<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='comment'>* Note that if you read a request to standby or to suspend, the kernel</span></td></tr> +<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>* will be waiting for you to respond to it with a call to apm_suspend ()</span></td></tr> +<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='comment'>* or to apm_standby () !</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'>int</span></td></tr> +<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line">apm_get_events (<span class='keyword'>int</span> fd, <span class='keyword'>int</span> timeout, apm_event_t * events, <span class='keyword'>int</span> n)</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'>int</span> retcode;</td></tr> +<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> fd_set fds;</td></tr> +<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> <span class='keyword'>struct</span> timeval t;</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"> t.tv_sec = timeout;</td></tr> +<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> t.tv_usec = 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='macro'>FD_ZERO (&fds)<span class='macro_popup'>do { unsigned int __i; fd_set *__arr = (&fds); for (__i =<br> 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) ((__arr<br>)->__fds_bits)[__i] = 0; } while (0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='macro'>FD_SET (fd, &fds)<span class='macro_popup'>((void) (((&fds)->__fds_bits)[((fd) / (8 * (int) sizeof<br> (__fd_mask)))] |= ((__fd_mask) (1UL << ((fd) % (8 * (int<br>) sizeof (__fd_mask)))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> retcode = select (fd + 1, &fds, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, timeout < 0 ? <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> : &t);</td></tr> +<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> <span class='keyword'>if</span> (retcode <= 0)</td></tr> +<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr> +<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='keyword'>return</span> read (fd, events, n * <span class='keyword'>sizeof</span> (apm_event_t)) / <span class='keyword'>sizeof</span> (apm_event_t);</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'>/* Try to set the Power State to Suspend. */</span></td></tr> +<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">apm_suspend (<span class='keyword'>int</span> fd)</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"> sync ();</td></tr> +<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='keyword'>return</span> ioctl (fd, <span class='macro'>APM_IOC_SUSPEND<span class='macro_popup'>(((0U) << (((0 +8)+8)+14)) | ((('A')) << (0 +8)) |<br> (((2)) << 0) | ((0) << ((0 +8)+8)))</span></span>, <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">}</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"><span class='comment'>/* Try to set the Power State to Standby. */</span></td></tr> +<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">apm_standby (<span class='keyword'>int</span> fd)</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"> sync ();</td></tr> +<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>return</span> ioctl (fd, <span class='macro'>APM_IOC_STANDBY<span class='macro_popup'>(((0U) << (((0 +8)+8)+14)) | ((('A')) << (0 +8)) |<br> (((1)) << 0) | ((0) << ((0 +8)+8)))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)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='comment'>/* Return the last error code generated by the kernel APM driver */</span></td></tr> +<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"><span class='keyword'>unsigned</span> <span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line">apm_last_error ( <span class='keyword'>int</span> fd )</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'>int</span> err = 0;</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='directive'>#ifdef APM_IOC_LAST_ERROR</span></td></tr> +<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span class='keyword'>int</span> ierr = 0;</td></tr> +<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> ((ierr = ioctl (fd, APM_IOC_LAST_ERROR, &err)))</td></tr> +<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='keyword'>return</span> ierr;</td></tr> +<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>return</span> err;</td></tr> +<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line">}</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"><span class='comment'>/* Define lookup table for error messages */</span></td></tr> +<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> lookup_t {</td></tr> +<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> <span class='keyword'>int</span> key;</td></tr> +<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>char</span>* msg;</td></tr> +<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">} lookup_t;</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='comment'>/* APM error messages, arranged by error code */</span></td></tr> +<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> lookup_t error_table[] = {</td></tr> +<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"><span class='comment'>/* N/A { APM_SUCCESS, "Operation succeeded" }, */</span></td></tr> +<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> { <span class='macro'>APM_DISABLED<span class='macro_popup'>0x01</span></span>, <span class='string_literal'>"Power management disabled"</span> },</td></tr> +<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> { <span class='macro'>APM_CONNECTED<span class='macro_popup'>0x02</span></span>, <span class='string_literal'>"Real mode interface already connected"</span> },</td></tr> +<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> { <span class='macro'>APM_NOT_CONNECTED<span class='macro_popup'>0x03</span></span>, <span class='string_literal'>"Interface not connected"</span> },</td></tr> +<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> { <span class='macro'>APM_16_CONNECTED<span class='macro_popup'>0x05</span></span>, <span class='string_literal'>"16 bit interface already connected"</span> },</td></tr> +<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"><span class='comment'>/* N/A { APM_16_UNSUPPORTED, "16 bit interface not supported" }, */</span></td></tr> +<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> { <span class='macro'>APM_32_CONNECTED<span class='macro_popup'>0x07</span></span>, <span class='string_literal'>"32 bit interface already connected"</span> },</td></tr> +<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> { <span class='macro'>APM_32_UNSUPPORTED<span class='macro_popup'>0x08</span></span>, <span class='string_literal'>"32 bit interface not supported"</span> },</td></tr> +<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> { <span class='macro'>APM_BAD_DEVICE<span class='macro_popup'>0x09</span></span>, <span class='string_literal'>"Unrecognized device ID"</span> },</td></tr> +<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> { <span class='macro'>APM_BAD_PARAM<span class='macro_popup'>0x0a</span></span>, <span class='string_literal'>"Parameter out of range"</span> },</td></tr> +<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> { <span class='macro'>APM_NOT_ENGAGED<span class='macro_popup'>0x0b</span></span>, <span class='string_literal'>"Interface not engaged"</span> },</td></tr> +<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"><span class='directive'>#ifdef <span class='macro'>APM_BAD_FUNCTION<span class='macro_popup'>0x0c</span></span></span></td></tr> +<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> { <span class='macro'>APM_BAD_FUNCTION<span class='macro_popup'>0x0c</span></span>, <span class='string_literal'>"Function not supported"</span> },</td></tr> +<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"><span class='directive'>#ifdef <span class='macro'>APM_RESUME_DISABLED<span class='macro_popup'>0x0d</span></span></span></td></tr> +<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> { <span class='macro'>APM_RESUME_DISABLED<span class='macro_popup'>0x0d</span></span>, <span class='string_literal'>"Resume timer disabled"</span> },</td></tr> +<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> { <span class='macro'>APM_BAD_STATE<span class='macro_popup'>0x60</span></span>, <span class='string_literal'>"Unable to enter requested state"</span> },</td></tr> +<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"><span class='comment'>/* N/A { APM_NO_EVENTS, "No events pending" }, */</span></td></tr> +<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> { <span class='macro'>APM_NOT_PRESENT<span class='macro_popup'>0x86</span></span>, <span class='string_literal'>"No APM present"</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='directive'>#define <span class='macro'>ERROR_COUNT<span class='macro_popup'>(sizeof(error_table)/sizeof(lookup_t))</span></span> (sizeof(error_table)/sizeof(lookup_t))</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='comment'>/* Return character string describing error messages from APM kernel */</span></td></tr> +<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line">apm_error_name (<span class='keyword'>unsigned</span> <span class='keyword'>int</span> err)</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'>int</span> i;</td></tr> +<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>for</span> (i=0; i<<span class='macro'>ERROR_COUNT<span class='macro_popup'>(sizeof(error_table)/sizeof(lookup_t))</span></span>; i++)</td></tr> +<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='keyword'>if</span> (err == error_table[i].key) <span class='keyword'>return</span> (error_table[i].msg);</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> <span class='string_literal'>"Unknown error"</span>;</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='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line">apm_reject (<span class='keyword'>int</span> fd)</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='directive'>#ifdef APM_IOC_REJECT</span></td></tr> +<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='keyword'>if</span> (ioctl fd, APM_IOC_REJECT, <span class='macro'>NULL<span class='macro_popup'>((void*)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> apm_last_error (fd);</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"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='keyword'>return</span> 0;</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"> </td></tr> +<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"><span class='directive'>#ifdef APM_IOC_IGNORE /* detect kernel support of IGNORE/NOIGNORE functions */</span></td></tr> +<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"><span class='keyword'>int</span></td></tr> +<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line">apm_set_ignore (<span class='keyword'>int</span> fd, <span class='keyword'>int</span> mode)</td></tr> +<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"><span class='comment'>/* Ignore Standby. */</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"> <span class='keyword'>if</span> (mode == <span class='macro'>IGNORE<span class='macro_popup'>2</span></span>)</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"> printf (<span class='string_literal'>"Telling kernel to ignore system standby/suspend mode\n"</span>);</td></tr> +<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='keyword'>return</span> ioctl (fd, APM_IOC_IGNORE, <span class='macro'>NULL<span class='macro_popup'>((void*)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='keyword'>else</span></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"> printf (<span class='string_literal'>"Telling kernel not to ignore system standby/suspend mode\n"</span>);</td></tr> +<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='keyword'>return</span> ioctl (fd, APM_IOC_NOIGNORE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> printf (<span class='string_literal'>"NOTE: User-generated suspend/standby requests are not ignored\n"</span>);</td></tr> +<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line">}</td></tr> +<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"><span class='directive'>#endif</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'>/* Return a string describing the event. From p. 16 of the Intel/Microsoft</span></td></tr> +<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='comment'>* Advanded Power Management (APM) BIOS Interface Specification, Revision</span></td></tr> +<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='comment'>* 1.1 (September 1993). Intel Order Number: 241704-001. Microsoft Part</span></td></tr> +<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='comment'>* Number: 781-110-X01.</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='comment'>* Updated to APM BIOS 1.2 spec (February 1996). Available on-line.</span></td></tr> +<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line">apm_event_name (apm_event_t event)</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='keyword'>switch</span> (event)</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"> <span class='keyword'>case</span> <span class='macro'>APM_SYS_STANDBY<span class='macro_popup'>0x0001</span></span>:</td></tr> +<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"System Standby Request"</span>;</td></tr> +<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_SYS_SUSPEND<span class='macro_popup'>0x0002</span></span>:</td></tr> +<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"System Suspend Request"</span>;</td></tr> +<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_NORMAL_RESUME<span class='macro_popup'>0x0003</span></span>:</td></tr> +<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Normal Resume System"</span>;</td></tr> +<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_CRITICAL_RESUME<span class='macro_popup'>0x0004</span></span>:</td></tr> +<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Critical Resume System"</span>;</td></tr> +<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_LOW_BATTERY<span class='macro_popup'>0x0005</span></span>:</td></tr> +<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Battery Low"</span>;</td></tr> +<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_POWER_STATUS_CHANGE<span class='macro_popup'>0x0006</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> <span class='string_literal'>"Power Status Change"</span>;</td></tr> +<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_UPDATE_TIME<span class='macro_popup'>0x0007</span></span>:</td></tr> +<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Update Time"</span>;</td></tr> +<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_CRITICAL_SUSPEND<span class='macro_popup'>0x0008</span></span>:</td></tr> +<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"Critical Suspend"</span>;</td></tr> +<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_USER_STANDBY<span class='macro_popup'>0x0009</span></span>:</td></tr> +<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"User System Standby Request"</span>;</td></tr> +<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_USER_SUSPEND<span class='macro_popup'>0x000a</span></span>:</td></tr> +<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"User System Suspend Request"</span>;</td></tr> +<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_STANDBY_RESUME<span class='macro_popup'>0x000b</span></span>:</td></tr> +<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"System Standby Resume"</span>;</td></tr> +<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"><span class='directive'>#ifdef <span class='macro'>APM_CAPABILITY_CHANGE<span class='macro_popup'>0x000c</span></span></span></td></tr> +<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>APM_CAPABILITY_CHANGE<span class='macro_popup'>0x000c</span></span>:</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='string_literal'>"Capability Change"</span>;</td></tr> +<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"><span class='directive'>#endif</span></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'>return</span> <span class='string_literal'>"Unknown"</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"> </td></tr> +<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"><span class='comment'>/* This is a convenience function that has nothing to do with APM. It just</span></td></tr> +<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>* formats a time nicely. If you don't like this format, then write your</span></td></tr> +<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> <span class='comment'>* own.</span></td></tr> +<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"><span class='directive'>#define <span class='macro'>SEC_PER_DAY<span class='macro_popup'>(60*60*24)</span></span> (60*60*24)</span></td></tr> +<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"><span class='directive'>#define <span class='macro'>SEC_PER_HOUR<span class='macro_popup'>(60*60)</span></span> (60*60)</span></td></tr> +<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"><span class='directive'>#define <span class='macro'>SEC_PER_MIN<span class='macro_popup'>(60)</span></span> (60)</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"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line">apm_delta_time (time_t then, time_t now)</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='keyword'>return</span> apm_time (now - then);</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"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">apm_time (time_t t)</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'>static</span> <span class='keyword'>char</span> buffer[128];</td></tr> +<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> s, m, h, d;</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"> d = t / <span class='macro'>SEC_PER_DAY<span class='macro_popup'>(60*60*24)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> t -= d * <span class='macro'>SEC_PER_DAY<span class='macro_popup'>(60*60*24)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> h = t / <span class='macro'>SEC_PER_HOUR<span class='macro_popup'>(60*60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> t -= h * <span class='macro'>SEC_PER_HOUR<span class='macro_popup'>(60*60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> m = t / <span class='macro'>SEC_PER_MIN<span class='macro_popup'>(60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> t -= m * <span class='macro'>SEC_PER_MIN<span class='macro_popup'>(60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> s = t;</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> (d)</td></tr> +<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> sprintf (buffer, <span class='string_literal'>"%lu day%s, %02lu:%02lu:%02lu"</span>,</td></tr> +<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> d, d > 1 ? <span class='string_literal'>"s"</span> : <span class='string_literal'>""</span>, h, m, s);</td></tr> +<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> sprintf (buffer, <span class='string_literal'>"%02lu:%02lu:%02lu"</span>, h, m, s);</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"> <span class='keyword'>if</span> (t == -1)</td></tr> +<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> sprintf (buffer, <span class='string_literal'>"unknown"</span>);</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"> <span class='keyword'>return</span> buffer;</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"> </td></tr> +<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"><span class='keyword'>const</span> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line">apm_time_nosec (time_t t)</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'>static</span> <span class='keyword'>char</span> buffer[128];</td></tr> +<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> s, m, h, d;</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"> d = t / <span class='macro'>SEC_PER_DAY<span class='macro_popup'>(60*60*24)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> t -= d * <span class='macro'>SEC_PER_DAY<span class='macro_popup'>(60*60*24)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> h = t / <span class='macro'>SEC_PER_HOUR<span class='macro_popup'>(60*60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> t -= h * <span class='macro'>SEC_PER_HOUR<span class='macro_popup'>(60*60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> m = t / <span class='macro'>SEC_PER_MIN<span class='macro_popup'>(60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> t -= m * <span class='macro'>SEC_PER_MIN<span class='macro_popup'>(60)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> s = t;</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'>if</span> (s > 30)</td></tr> +<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> ++m;</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'>if</span> (d)</td></tr> +<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> sprintf (buffer, <span class='string_literal'>"%lu day%s, %lu:%02lu"</span>,</td></tr> +<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> d, d > 1 ? <span class='string_literal'>"s"</span> : <span class='string_literal'>""</span>, h, m);</td></tr> +<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> sprintf (buffer, <span class='string_literal'>"%lu:%02lu"</span>, h, m);</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"> <span class='keyword'>if</span> (t == -1)</td></tr> +<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> sprintf (buffer, <span class='string_literal'>"unknown"</span>);</td></tr> +<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='keyword'>return</span> buffer;</td></tr> +<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line">}</td></tr> +</table></body></html> diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-782963.html b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-782963.html new file mode 100644 index 00000000..86f83023 --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-782963.html @@ -0,0 +1,1025 @@ +<!doctype html> +<html> +<head> +<title>themes.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 Value stored to 'token' is never read --> + +<!-- BUGTYPE Dead assignment --> + +<!-- BUGCATEGORY Unused code --> + +<!-- BUGFILE /rootdir/geyes/src/themes.c --> + +<!-- FILENAME themes.c --> + +<!-- FUNCTIONNAME parse_theme_file --> + +<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 7829630780b42c5aadb78b3721438889 --> + +<!-- BUGLINE 80 --> + +<!-- BUGCOLUMN 13 --> + +<!-- BUGPATHLENGTH 1 --> + +<!-- BUGMETAEND --> +<!-- REPORTHEADER --> +<h3>Bug Summary</h3> +<table class="simpletable"> +<tr><td class="rowname">File:</td><td>geyes/src/themes.c</td></tr> +<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 80, column 13</a><br />Value stored to 'token' is never read</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 themes.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=none -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/geyes/src -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I . -I . -I /usr/include/mate-panel-4.0/libmate-panel-applet -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/local/include -D GEYES_THEMES_DIR="/usr/local/share/mate-applets/geyes/" -D GEYES_RESOURCE_PATH="/org/mate/mate-applets/eyes/" -internal-isystem /usr/lib64/clang/16/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 -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/geyes/src -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -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/2023-10-08-232600-14316-1 -x c themes.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": {"80": 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'>/*</span></td></tr> +<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Copyright (C) 1999 Dave Camp <[email protected]></span></td></tr> +<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</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="5"><td class="num" id="LN5">5</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="6"><td class="num" id="LN6">6</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="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr> +<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</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="10"><td class="num" id="LN10">10</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="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr> +<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr> +<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</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="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr> +<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr> +<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*/</span></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'>#include <config.h></span></td></tr> +<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"><span class='directive'>#include <string.h></span></td></tr> +<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='directive'>#include <ctype.h></span></td></tr> +<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"><span class='directive'>#include <gtk/gtk.h></span></td></tr> +<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include <gio/gio.h></span></td></tr> +<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include "geyes.h"</span></td></tr> +<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#define <span class='macro'>GET_WIDGET(x)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>x))))))))</span></span> (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (builder, (x)))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>x)))))))</span></span>)</span></td></tr> +<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#define <span class='macro'>NUM_THEME_DIRECTORIES<span class='macro_popup'>2</span></span> 2</span></td></tr> +<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *theme_directories[<span class='macro'>NUM_THEME_DIRECTORIES<span class='macro_popup'>2</span></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='keyword'>enum</span> {</td></tr> +<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> COL_THEME_DIR = 0,</td></tr> +<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> COL_THEME_NAME,</td></tr> +<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> TOTAL_COLS</td></tr> +<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line">};</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='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line">theme_dirs_create (<span class='keyword'>void</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='keyword'>static</span> gboolean themes_created = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></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='keyword'>if</span> (themes_created == <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>)</td></tr> +<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> <span class='keyword'>return</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"> theme_directories[0] = g_build_filename (<span class='macro'>GEYES_THEMES_DIR<span class='macro_popup'>"/usr/local/share/mate-applets/geyes/"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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"> theme_directories[1] = g_build_filename (g_get_user_config_dir (), <span class='string_literal'>"mate"</span>,</td></tr> +<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='string_literal'>"geyes-themes"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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"> themes_created = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</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"> </td></tr> +<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line">parse_theme_file (EyesApplet *eyes_applet,</td></tr> +<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> FILE *theme_file)</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"> gchar line_buf[512]; <span class='comment'>/* prolly overkill */</span></td></tr> +<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> gchar *token;</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='keyword'>if</span> (fgets (line_buf, 512, theme_file) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> g_debug (<span class='string_literal'>"fgets error"</span>);</td></tr> +<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>while</span> (!feof (theme_file)) {</td></tr> +<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> token = strtok (line_buf, <span class='string_literal'>"="</span>);</td></tr> +<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='keyword'>if</span> (strncmp (token, <span class='string_literal'>"wall-thickness"</span>, strlen (<span class='string_literal'>"wall-thickness"</span>)) == 0) {</td></tr> +<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> token += strlen (<span class='string_literal'>"wall-thickness"</span>);</td></tr> +<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span class='keyword'>while</span> (!<span class='macro'>isdigit (*token)<span class='macro_popup'>((*__ctype_b_loc ())[(int) ((*token))] & (unsigned short int<br>) _ISdigit)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> token++;</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"> sscanf (token, <span class='string_literal'>"%d"</span>, &eyes_applet->wall_thickness);</td></tr> +<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strncmp (token, <span class='string_literal'>"num-eyes"</span>, strlen (<span class='string_literal'>"num-eyes"</span>)) == 0) {</td></tr> +<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> token += strlen (<span class='string_literal'>"num-eyes"</span>);</td></tr> +<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> <span class='keyword'>while</span> (!<span class='macro'>isdigit (*token)<span class='macro_popup'>((*__ctype_b_loc ())[(int) ((*token))] & (unsigned short int<br>) _ISdigit)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> token++;</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"> sscanf (token, <span class='string_literal'>"%"</span> <span class='macro'>G_GSIZE_FORMAT<span class='macro_popup'>"lu"</span></span>, &eyes_applet->num_eyes);</td></tr> +<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>if</span> (eyes_applet->num_eyes > <span class='macro'>MAX_EYES<span class='macro_popup'>1000</span></span>)</td></tr> +<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> eyes_applet->num_eyes = <span class='macro'>MAX_EYES<span class='macro_popup'>1000</span></span>;</td></tr> +<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strncmp (token, <span class='string_literal'>"eye-pixmap"</span>, strlen (<span class='string_literal'>"eye-pixmap"</span>)) == 0) {</td></tr> +<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> token = <span class="mrange">strtok (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"\""</span>)</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:13ex">Value stored to 'token' is never read</div></td></tr> +<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> token = strtok (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"\""</span>);</td></tr> +<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> <span class='keyword'>if</span> (eyes_applet->eye_filename != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> g_free (eyes_applet->eye_filename);</td></tr> +<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> eyes_applet->eye_filename</td></tr> +<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> = g_build_filename (eyes_applet->theme_dir, token, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (strncmp (token, <span class='string_literal'>"pupil-pixmap"</span>, strlen (<span class='string_literal'>"pupil-pixmap"</span>)) == 0) {</td></tr> +<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> token = strtok (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"\""</span>);</td></tr> +<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> token = strtok (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"\""</span>);</td></tr> +<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class='keyword'>if</span> (eyes_applet->pupil_filename != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> g_free (eyes_applet->pupil_filename);</td></tr> +<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> eyes_applet->pupil_filename</td></tr> +<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> = g_build_filename (eyes_applet->theme_dir, token, <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> (fgets (line_buf, 512, theme_file) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> g_debug (<span class='string_literal'>"fgets error"</span>);</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">}</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'>int</span></td></tr> +<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line">load_theme (EyesApplet *eyes_applet,</td></tr> +<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> <span class='keyword'>const</span> gchar *theme_dir)</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 *dialog;</td></tr> +<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> FILE *theme_file;</td></tr> +<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> gchar *file_name;</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"> eyes_applet->theme_dir = <span class='macro'>g_strdup (theme_dir)<span class='macro_popup'>g_strdup_inline (theme_dir)</span></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"> file_name = g_build_filename (theme_dir, <span class='string_literal'>"config"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='keyword'>if</span> ((theme_file = fopen (file_name, <span class='string_literal'>"r"</span>)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> g_free (eyes_applet->theme_dir);</td></tr> +<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> eyes_applet->theme_dir = g_build_filename (<span class='macro'>GEYES_THEMES_DIR<span class='macro_popup'>"/usr/local/share/mate-applets/geyes/"</span></span>, <span class='string_literal'>"Default-tiny"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> theme_file = fopen (<span class='macro'>GEYES_THEMES_DIR<span class='macro_popup'>"/usr/local/share/mate-applets/geyes/"</span></span> <span class='string_literal'>"Default-tiny/config"</span>, <span class='string_literal'>"r"</span>);</td></tr> +<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> g_free (file_name);</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='comment'>/* if it's still NULL we've got a major problem */</span></td></tr> +<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> <span class='keyword'>if</span> (theme_file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> dialog = gtk_message_dialog_new_with_markup (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> GTK_DIALOG_DESTROY_WITH_PARENT,</td></tr> +<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,</td></tr> +<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> <span class='string_literal'>"<b>%s</b>\n\n%s"</span>,</td></tr> +<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Can not launch the eyes applet."</span>)<span class='macro_popup'>dcgettext (((void*)0), "Can not launch the eyes applet.", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"There was a fatal error while trying to load the theme."</span>)<span class='macro_popup'>dcgettext (((void*)0), "There was a fatal error while trying to load the theme."<br>, 5)</span></span>);</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"> gtk_dialog_run (<span class='macro'>GTK_DIALOG (dialog)<span class='macro_popup'>((((GtkDialog*) (void *) ((dialog)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> gtk_widget_destroy (dialog);</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"> gtk_widget_destroy (<span class='macro'>GTK_WIDGET (eyes_applet->applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((eyes_applet->applet)))))</span></span>);</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'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> parse_theme_file (eyes_applet, theme_file);</td></tr> +<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> fclose (theme_file);</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"> eyes_applet->theme_name = <span class='macro'>g_strdup (theme_dir)<span class='macro_popup'>g_strdup_inline (theme_dir)</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> (eyes_applet->eye_image)</td></tr> +<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> g_object_unref (eyes_applet->eye_image);</td></tr> +<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> eyes_applet->eye_image</td></tr> +<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> = gdk_pixbuf_new_from_file (eyes_applet->eye_filename,</td></tr> +<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> <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"> <span class='keyword'>if</span> (eyes_applet->pupil_image)</td></tr> +<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> g_object_unref (eyes_applet->pupil_image);</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"> eyes_applet->pupil_image</td></tr> +<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> = gdk_pixbuf_new_from_file (eyes_applet->pupil_filename,</td></tr> +<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> eyes_applet->eye_height = gdk_pixbuf_get_height (eyes_applet->eye_image);</td></tr> +<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> eyes_applet->eye_width = gdk_pixbuf_get_width (eyes_applet->eye_image);</td></tr> +<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> eyes_applet->pupil_height = gdk_pixbuf_get_height (eyes_applet->pupil_image);</td></tr> +<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> eyes_applet->pupil_width = gdk_pixbuf_get_width (eyes_applet->pupil_image);</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'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line">destroy_theme (EyesApplet *eyes_applet)</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='comment'>/* Dunno about this - to unref or not to unref? */</span></td></tr> +<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='keyword'>if</span> (eyes_applet->eye_image != <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"> g_object_unref (eyes_applet->eye_image);</td></tr> +<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> eyes_applet->eye_image = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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"> <span class='keyword'>if</span> (eyes_applet->pupil_image != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> g_object_unref (eyes_applet->pupil_image);</td></tr> +<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> eyes_applet->pupil_image = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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"> </td></tr> +<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> g_free (eyes_applet->theme_dir);</td></tr> +<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> g_free (eyes_applet->theme_name);</td></tr> +<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line">}</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='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line">theme_selected_cb (GtkTreeSelection *selection,</td></tr> +<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> gpointer data)</td></tr> +<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> EyesApplet *eyes_applet = data;</td></tr> +<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> GtkTreeModel *model;</td></tr> +<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> GtkTreeIter iter;</td></tr> +<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> gchar *theme;</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"> <span class='keyword'>if</span> (!gtk_tree_selection_get_selected (selection, &model, &iter))</td></tr> +<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='keyword'>return</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"> gtk_tree_model_get (model, &iter, COL_THEME_DIR, &theme, -1);</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='macro'>g_return_if_fail (theme)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_11<br>; if (theme) _g_boolean_var_11 = 1; else _g_boolean_var_11 = 0<br>; _g_boolean_var_11; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "theme"); return;<br> } } while (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"> <span class='keyword'>if</span> (!g_ascii_strncasecmp (theme, eyes_applet->theme_dir,</td></tr> +<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> strlen (theme))) {</td></tr> +<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> g_free (theme);</td></tr> +<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='keyword'>return</span>;</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"> destroy_eyes (eyes_applet);</td></tr> +<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> destroy_theme (eyes_applet);</td></tr> +<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> load_theme (eyes_applet, theme);</td></tr> +<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> setup_eyes (eyes_applet);</td></tr> +<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> g_settings_set_string (eyes_applet->settings,</td></tr> +<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> <span class='macro'>GEYES_SETTINGS_THEME_PATH_KEY<span class='macro_popup'>"theme-path"</span></span>,</td></tr> +<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> theme);</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"> g_free (theme);</td></tr> +<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line">}</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"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line">phelp_cb (GtkDialog *dialog)</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"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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"> gtk_show_uri_on_window (<span class='macro'>GTK_WINDOW (dialog)<span class='macro_popup'>((((GtkWindow*) (void *) ((dialog)))))</span></span>, <span class='string_literal'>"help:mate-geyes/geyes-settings"</span>,</td></tr> +<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> gtk_get_current_event_time (),</td></tr> +<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> &error);</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'>if</span> (error) {</td></tr> +<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> GtkWidget *error_dialog</td></tr> +<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> = gtk_message_dialog_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, GTK_DIALOG_MODAL,</td></tr> +<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> GTK_MESSAGE_ERROR,</td></tr> +<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> GTK_BUTTONS_CLOSE,</td></tr> +<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"There was an error displaying help: %s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "There was an error displaying help: %s"<br>, 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> error->message);</td></tr> +<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='macro'>g_signal_connect (error_dialog, <span class='string_literal'>"response"</span>,<span class='macro_popup'>g_signal_connect_data ((error_dialog), ("response"), (((GCallback<br>) (gtk_widget_destroy))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='macro'>G_CALLBACK (gtk_widget_destroy),<span class='macro_popup'>g_signal_connect_data ((error_dialog), ("response"), (((GCallback<br>) (gtk_widget_destroy))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((error_dialog), ("response"), (((GCallback<br>) (gtk_widget_destroy))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> gtk_window_set_resizable (<span class='macro'>GTK_WINDOW (error_dialog)<span class='macro_popup'>((((GtkWindow*) (void *) ((error_dialog)))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> gtk_window_set_screen (<span class='macro'>GTK_WINDOW (error_dialog)<span class='macro_popup'>((((GtkWindow*) (void *) ((error_dialog)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> gtk_widget_get_screen (<span class='macro'>GTK_WIDGET (dialog)<span class='macro_popup'>((((GtkWidget*) (void *) ((dialog)))))</span></span>));</td></tr> +<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> gtk_widget_show (error_dialog);</td></tr> +<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> g_clear_error (&error);</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">}</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> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">presponse_cb (GtkDialog *dialog,</td></tr> +<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> gint id,</td></tr> +<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> gpointer data)</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"> EyesApplet *eyes_applet = data;</td></tr> +<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='keyword'>if</span> (id == GTK_RESPONSE_HELP) {</td></tr> +<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> phelp_cb (dialog);</td></tr> +<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> <span class='keyword'>return</span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> gtk_widget_destroy (<span class='macro'>GTK_WIDGET (dialog)<span class='macro_popup'>((((GtkWidget*) (void *) ((dialog)))))</span></span>);</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"> eyes_applet->prop_box.pbox = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line">properties_cb (GtkAction *action,</td></tr> +<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> EyesApplet *eyes_applet)</td></tr> +<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> GtkBuilder *builder;</td></tr> +<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> GtkWidget *tree;</td></tr> +<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> GtkWidget *label;</td></tr> +<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> GtkListStore *model;</td></tr> +<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> GtkTreeViewColumn *column;</td></tr> +<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> GtkCellRenderer *cell;</td></tr> +<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> GtkTreeIter iter;</td></tr> +<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> GDir *dfd;</td></tr> +<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *dp;</td></tr> +<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</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="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>int</span> i;</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"> <span class='keyword'>if</span> (eyes_applet->prop_box.pbox) {</td></tr> +<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> gtk_window_set_screen (<span class='macro'>GTK_WINDOW (eyes_applet->prop_box.pbox)<span class='macro_popup'>((((GtkWindow*) (void *) ((eyes_applet->prop_box.pbox)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> gtk_widget_get_screen (<span class='macro'>GTK_WIDGET (eyes_applet->applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((eyes_applet->applet)))))</span></span>));</td></tr> +<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> gtk_window_present (<span class='macro'>GTK_WINDOW (eyes_applet->prop_box.pbox)<span class='macro_popup'>((((GtkWindow*) (void *) ((eyes_applet->prop_box.pbox)))))</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>;</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"> </td></tr> +<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> builder = gtk_builder_new_from_resource (<span class='macro'>GEYES_RESOURCE_PATH<span class='macro_popup'>"/org/mate/mate-applets/eyes/"</span></span> <span class='string_literal'>"themes.ui"</span>);</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"> eyes_applet->prop_box.pbox = <span class='macro'>GET_WIDGET(<span class='string_literal'>"preferences_dialog"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"preferences_dialog"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> tree = <span class='macro'>GET_WIDGET(<span class='string_literal'>"themes_treeview"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"themes_treeview"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> label = <span class='macro'>GET_WIDGET(<span class='string_literal'>"select_theme_label"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"select_theme_label"))))))))</span></span>;</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"> model = gtk_list_store_new (TOTAL_COLS, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) << (2)))</span></span>, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) << (2)))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> gtk_tree_view_set_model (<span class='macro'>GTK_TREE_VIEW (tree)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree)))))</span></span>, <span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> cell = gtk_cell_renderer_text_new ();</td></tr> +<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> column = gtk_tree_view_column_new_with_attributes (<span class='string_literal'>"not used"</span>, cell, <span class='string_literal'>"text"</span>,</td></tr> +<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> COL_THEME_NAME,</td></tr> +<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> gtk_tree_view_append_column (<span class='macro'>GTK_TREE_VIEW (tree)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree)))))</span></span>, column);</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> (!g_settings_is_writable (eyes_applet->settings, <span class='macro'>GEYES_SETTINGS_THEME_PATH_KEY<span class='macro_popup'>"theme-path"</span></span>)) {</td></tr> +<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> gtk_widget_set_sensitive (tree, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> gtk_widget_set_sensitive (label, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</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"> </td></tr> +<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < <span class='macro'>NUM_THEME_DIRECTORIES<span class='macro_popup'>2</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> dfd = g_dir_open (theme_directories[i], 0, &error);</td></tr> +<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span class='keyword'>if</span> (error) {</td></tr> +<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> g_debug (<span class='string_literal'>"Could not open the folder: %s"</span>, error->message);</td></tr> +<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> g_clear_error (&error);</td></tr> +<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> <span class='keyword'>continue</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"> <span class='keyword'>while</span> ((dp = g_dir_read_name (dfd)) != <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='keyword'>if</span> (dp[0] != '.') {</td></tr> +<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> gchar *theme_dir;</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"> theme_dir = g_build_filename (theme_directories[i], dp, <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"> gtk_list_store_append (model, &iter);</td></tr> +<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> gtk_list_store_set (model, &iter,</td></tr> +<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> COL_THEME_DIR, theme_dir,</td></tr> +<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> COL_THEME_NAME, dp,</td></tr> +<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> -1);</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"> <span class='keyword'>if</span> (!g_ascii_strncasecmp (eyes_applet->theme_dir, theme_dir,</td></tr> +<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> strlen (theme_dir))) {</td></tr> +<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> GtkTreePath *path;</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"> path = gtk_tree_model_get_path (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, &iter);</td></tr> +<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> gtk_tree_view_set_cursor (<span class='macro'>GTK_TREE_VIEW (tree)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> path, <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="323"><td class="num" id="LN323">323</td><td class="line"> gtk_tree_path_free (path);</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"> g_free (theme_dir);</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"> g_dir_close (dfd);</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"> g_object_unref (model);</td></tr> +<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='comment'>/* signals */</span></td></tr> +<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> gtk_builder_add_callback_symbols (builder, <span class='string_literal'>"on_preferences_dialog_response"</span>,</td></tr> +<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='macro'>G_CALLBACK (presponse_cb)<span class='macro_popup'>((GCallback) (presponse_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='string_literal'>"on_themes_treeselection_changed"</span>,</td></tr> +<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='macro'>G_CALLBACK (theme_selected_cb)<span class='macro_popup'>((GCallback) (theme_selected_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> gtk_builder_connect_signals (builder, eyes_applet);</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"> g_object_unref (builder);</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"> gtk_widget_show_all (eyes_applet->prop_box.pbox);</td></tr> +<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>return</span>;</td></tr> +<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line">}</td></tr> +</table></body></html> diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-8b7574.html b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-8b7574.html new file mode 100644 index 00000000..d280ca24 --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-8b7574.html @@ -0,0 +1,2531 @@ +<!doctype html> +<html> +<head> +<title>netspeed.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/netspeed/src/netspeed.c --> + +<!-- FILENAME netspeed.c --> + +<!-- FUNCTIONNAME mac_addr_n2a --> + +<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 8b7574e57882059a3a13108f6461430f --> + +<!-- BUGLINE 671 --> + +<!-- BUGCOLUMN 9 --> + +<!-- BUGPATHLENGTH 25 --> + +<!-- BUGMETAEND --> +<!-- REPORTHEADER --> +<h3>Bug Summary</h3> +<table class="simpletable"> +<tr><td class="rowname">File:</td><td>netspeed/src/netspeed.c</td></tr> +<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 671, 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 netspeed.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=none -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/netspeed/src -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/local/include -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gio-unix-2.0 -I /usr/include/libgtop-2.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/mate-panel-4.0/libmate-panel-applet -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -D NETSPEED_RESOURCE_PATH="/org/mate/mate-applets/netspeed/" -I /usr/include/libnl3 -internal-isystem /usr/lib64/clang/16/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 -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/netspeed/src -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -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/2023-10-08-232600-14316-1 -x c netspeed.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": {"668": 1, "669": 1, "670": 1, "671": 1, "672": 1, "673": 1, "674": 1, "689": 1, "690": 1, "691": 1, "692": 1, "693": 1, "695": 1, "699": 1, "701": 1, "703": 1, "707": 1, "709": 1, "711": 1, "712": 1, "713": 1, "714": 1, "719": 1, "723": 1, "725": 1, "728": 1, "729": 1, "746": 1, "749": 1, "750": 1, "754": 1, "755": 1, "758": 1, "759": 1, "760": 1, "761": 1, "763": 1, "764": 1, "767": 1, "768": 1, "1175": 1, "1176": 1, "1177": 1, "1178": 1, "1179": 1, "1181": 1, "1183": 1, "1188": 1, "1190": 1, "1191": 1, "1193": 1, "1194": 1, "1195": 1, "1196": 1, "1197": 1, "1198": 1, "1199": 1, "1200": 1, "1201": 1, "1203": 1, "1204": 1, "1206": 1, "1208": 1, "1209": 1, "1210": 1, "1212": 1, "1213": 1, "1215": 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"/> + + </g> +</svg> +<script type='text/javascript'> +const arrowIndices = [ 57,54,52,49,49,49,47,45,42,40,36,34,30,28,24,22,18,16,13,12,10,8,5,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'>/* netspeed.c</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'>* This program is free software; you can redistribute it and/or modify</span></td></tr> +<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</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="5"><td class="num" id="LN5">5</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="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr> +<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</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="9"><td class="num" id="LN9">9</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="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr> +<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* GNU Library General Public License for more details.</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'>* You should have received a copy of the GNU General Public License</span></td></tr> +<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr> +<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr> +<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>*</span></td></tr> +<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* Netspeed Applet was writen by Jörgen Scheibengruber <[email protected]></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'>* MATE Netspeed Applet migrated by Stefano Karapetsas <[email protected]></span></td></tr> +<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>*/</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='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></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"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include <math.h></span></td></tr> +<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include <gtk/gtk.h></span></td></tr> +<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include <mate-panel-applet.h></span></td></tr> +<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include <mate-panel-applet-gsettings.h></span></td></tr> +<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include <glib.h></span></td></tr> +<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include <glib/gi18n.h></span></td></tr> +<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include <gio/gio.h></span></td></tr> +<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include "backend.h"</span></td></tr> +<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include "netspeed-preferences.h"</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 "netspeed.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'>#define <span class='macro'>GET_COLOR_CHOOSER(x)<span class='macro_popup'>(((((GtkColorChooser*) (void *) ((gtk_builder_get_object (builder<br>, (x))))))))</span></span> (<span class='macro'>GTK_COLOR_CHOOSER (gtk_builder_get_object (builder, (x)))<span class='macro_popup'>((((GtkColorChooser*) (void *) ((gtk_builder_get_object (builder<br>, (x)))))))</span></span>)</span></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'>GET_DRAWING_AREA(x)<span class='macro_popup'>(((((GtkDrawingArea*) (void *) ((gtk_builder_get_object (builder<br>, (x))))))))</span></span> (<span class='macro'>GTK_DRAWING_AREA (gtk_builder_get_object (builder, (x)))<span class='macro_popup'>((((GtkDrawingArea*) (void *) ((gtk_builder_get_object (builder<br>, (x)))))))</span></span>)</span></td></tr> +<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#define <span class='macro'>GET_WIDGET(x)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>x))))))))</span></span> (<span class='macro'>GTK_WIDGET (gtk_builder_get_object (builder, (x)))<span class='macro_popup'>((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>x)))))))</span></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'>/* Icons for the interfaces */</span></td></tr> +<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span>* <span class='keyword'>const</span> dev_type_icon [DEV_UNKNOWN + 1] = {</td></tr> +<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> <span class='comment'>/* FIXME: Need an actual loopback icon... */</span></td></tr> +<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> <span class='string_literal'>"reload"</span>, <span class='comment'>/* DEV_LO */</span></td></tr> +<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='string_literal'>"network-wired"</span>, <span class='comment'>/* DEV_ETHERNET */</span></td></tr> +<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='string_literal'>"network-wireless"</span>, <span class='comment'>/* DEV_WIRELESS */</span></td></tr> +<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='string_literal'>"modem"</span>, <span class='comment'>/* DEV_PPP */</span></td></tr> +<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='string_literal'>"mate-netspeed-plip"</span>, <span class='comment'>/* DEV_PLIP */</span></td></tr> +<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='string_literal'>"mate-netspeed-plip"</span>, <span class='comment'>/* DEV_SLIP */</span></td></tr> +<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='string_literal'>"network-workgroup"</span>, <span class='comment'>/* DEV_UNKNOWN */</span></td></tr> +<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line">};</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'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span>* wireless_quality_icon [] = {</td></tr> +<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='string_literal'>"mate-netspeed-wireless-25"</span>,</td></tr> +<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='string_literal'>"mate-netspeed-wireless-50"</span>,</td></tr> +<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> <span class='string_literal'>"mate-netspeed-wireless-75"</span>,</td></tr> +<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> <span class='string_literal'>"mate-netspeed-wireless-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"> </td></tr> +<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> IN_ICON[] = <span class='string_literal'>"go-down"</span>;</td></tr> +<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> OUT_ICON[] = <span class='string_literal'>"go-up"</span>;</td></tr> +<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> ERROR_ICON[] = <span class='string_literal'>"gtk-dialog-error"</span>;</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'>const</span> <span class='keyword'>char</span> LOGO_ICON[] = <span class='string_literal'>"mate-netspeed-applet"</span>;</td></tr> +<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"><span class='comment'>/* How many old in out values do we store?</span></td></tr> +<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='comment'>* The value actually shown in the applet is the average</span></td></tr> +<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> <span class='comment'>* of these values -> prevents the value from</span></td></tr> +<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='comment'>* "jumping around like crazy"</span></td></tr> +<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='directive'>#define <span class='macro'>OLD_VALUES<span class='macro_popup'>5</span></span> 5</span></td></tr> +<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"><span class='directive'>#define <span class='macro'>OLD_VALUES_DBL<span class='macro_popup'>5.0</span></span> 5.0</span></td></tr> +<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='directive'>#define <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span> 180</span></td></tr> +<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"><span class='directive'>#define <span class='macro'>GRAPH_LINES<span class='macro_popup'>4</span></span> 4</span></td></tr> +<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"><span class='directive'>#define <span class='macro'>REFRESH_TIME<span class='macro_popup'>1000</span></span> 1000</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"><span class='comment'>/* A struct containing all the "global" data of the</span></td></tr> +<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='comment'>* applet</span></td></tr> +<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"><span class='keyword'>struct</span> _NetspeedApplet</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"> MatePanelApplet parent;</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"> GtkWidget *box;</td></tr> +<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> GtkWidget *pix_box;</td></tr> +<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> GtkWidget *speed_box;</td></tr> +<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> GtkWidget *in_box;</td></tr> +<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> GtkWidget *in_label;</td></tr> +<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> GtkWidget *in_pix;</td></tr> +<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> GtkWidget *out_box;</td></tr> +<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GtkWidget *out_label;</td></tr> +<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> GtkWidget *out_pix;</td></tr> +<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> GtkWidget *sum_box;</td></tr> +<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> GtkWidget *sum_label;</td></tr> +<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GtkWidget *dev_pix;</td></tr> +<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> GtkWidget *qual_pix;</td></tr> +<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> cairo_surface_t *qual_surfaces[4];</td></tr> +<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> gboolean labels_dont_shrink;</td></tr> +<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> DevInfo *devinfo;</td></tr> +<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> gboolean device_has_changed;</td></tr> +<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> guint timeout_id;</td></tr> +<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> <span class='keyword'>char</span> *up_cmd;</td></tr> +<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='keyword'>char</span> *down_cmd;</td></tr> +<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> gboolean show_all_addresses;</td></tr> +<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> gboolean show_sum;</td></tr> +<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> gboolean show_bits;</td></tr> +<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> gboolean change_icon;</td></tr> +<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> gboolean auto_change_device;</td></tr> +<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> gboolean show_icon;</td></tr> +<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> gboolean show_quality_icon;</td></tr> +<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> GdkRGBA in_color;</td></tr> +<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GdkRGBA out_color;</td></tr> +<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>int</span> width;</td></tr> +<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='comment'>/* details dialog */</span></td></tr> +<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> GtkWidget *details;</td></tr> +<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> GtkDrawingArea *drawingarea;</td></tr> +<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> GtkWidget *ip_text;</td></tr> +<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> GtkWidget *netmask_text;</td></tr> +<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> GtkWidget *ptpip_text;</td></tr> +<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> GtkWidget *ipv6_text;</td></tr> +<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> GtkWidget *hwaddr_text;</td></tr> +<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> GtkWidget *inbytes_text;</td></tr> +<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> GtkWidget *outbytes_text;</td></tr> +<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> GtkWidget *essid_text;</td></tr> +<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> GtkWidget *signalbar;</td></tr> +<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_NL<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> GtkWidget *station_text;</td></tr> +<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> GtkWidget *channel_text;</td></tr> +<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> GtkWidget *connected_time_text;</td></tr> +<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> GtkWidget *ipv6_box;</td></tr> +<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> GtkWidget *netlink_box;</td></tr> +<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> GtkWidget *wireless_box;</td></tr> +<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='comment'>/* settings dialog */</span></td></tr> +<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> GtkWidget *preferences;</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"> guint index_old;</td></tr> +<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> guint64 in_old [<span class='macro'>OLD_VALUES<span class='macro_popup'>5</span></span>];</td></tr> +<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> guint64 out_old [<span class='macro'>OLD_VALUES<span class='macro_popup'>5</span></span>];</td></tr> +<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>double</span> max_graph;</td></tr> +<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='keyword'>double</span> in_graph [<span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>];</td></tr> +<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>double</span> out_graph [<span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>];</td></tr> +<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> <span class='keyword'>int</span> index_graph;</td></tr> +<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GtkWidget *connect_dialog;</td></tr> +<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> gboolean show_tooltip;</td></tr> +<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> GtkIconTheme *icon_theme;</td></tr> +<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> GSettings *settings;</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"><span class='macro'>G_DEFINE_TYPE (NetspeedApplet, netspeed_applet, PANEL_TYPE_APPLET)<span class='macro_popup'>static void netspeed_applet_init (NetspeedApplet *self); static<br> void netspeed_applet_class_init (NetspeedAppletClass *klass)<br>; static GType netspeed_applet_get_type_once (void); static gpointer<br> netspeed_applet_parent_class = ((void*)0); static gint NetspeedApplet_private_offset<br>; static void netspeed_applet_class_intern_init (gpointer klass<br>) { netspeed_applet_parent_class = g_type_class_peek_parent (<br>klass); if (NetspeedApplet_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &NetspeedApplet_private_offset); netspeed_applet_class_init<br> ((NetspeedAppletClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer netspeed_applet_get_instance_private<br> (NetspeedApplet *self) { return (((gpointer) ((guint8*) (self<br>) + (glong) (NetspeedApplet_private_offset)))); } GType netspeed_applet_get_type<br> (void) { static gsize static_g_define_type_id = 0; if ((__extension__<br> ({ _Static_assert (sizeof *(&static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); (void) (<br>0 ? (gpointer) *(&static_g_define_type_id) : ((void*)0));<br> (!(__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5)<br>; gapg_temp_newval; })) && g_once_init_enter (&static_g_define_type_id<br>)); }))) { GType g_define_type_id = netspeed_applet_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType netspeed_applet_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> (mate_panel_applet_get_type (), g_intern_static_string ("NetspeedApplet"<br>), sizeof (NetspeedAppletClass), (GClassInitFunc)(void (*)(void<br>)) netspeed_applet_class_intern_init, sizeof (NetspeedApplet)<br>, (GInstanceInitFunc)(void (*)(void)) netspeed_applet_init, (<br>GTypeFlags) 0); { {{};} } return g_define_type_id; }</span></span></td></tr> +<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line">update_tooltip (NetspeedApplet *netspeed);</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">GSettings *</td></tr> +<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line">netspeed_applet_get_settings (NetspeedApplet *netspeed)</td></tr> +<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>return</span> netspeed->settings;</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"> </td></tr> +<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"><span class='keyword'>const</span> gchar *</td></tr> +<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line">netspeed_applet_get_current_device_name (NetspeedApplet *netspeed)</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'>return</span> netspeed->devinfo->name;</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'>/* Adds a Pango markup "foreground" to a bytestring</span></td></tr> +<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line">add_markup_fgcolor (<span class='keyword'>char</span> **string,</td></tr> +<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *color)</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'>char</span> *tmp = *string;</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"> *string = g_strdup_printf (<span class='string_literal'>"<span foreground=\"%s\">%s</span>"</span>, color, tmp);</td></tr> +<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> g_free (tmp);</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='comment'>/* Change the icons according to the selected device</span></td></tr> +<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line">change_icons (NetspeedApplet *netspeed)</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"> cairo_surface_t *dev, *down;</td></tr> +<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> cairo_surface_t *in_arrow, *out_arrow;</td></tr> +<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> gint icon_scale;</td></tr> +<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> gint icon_size = mate_panel_applet_get_size (MATE_PANEL_APPLET (netspeed)) - 8;</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='comment'>/* FIXME: Not all network icons include a high enough resolution, so to make them all</span></td></tr> +<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='comment'>* consistent, we cap them at 48px.*/</span></td></tr> +<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> icon_size = <span class='macro'>CLAMP (icon_size, 16, 48)<span class='macro_popup'>(((icon_size) > (48)) ? (48) : (((icon_size) < (16)) ? (<br>16) : (icon_size)))</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"> icon_scale = gtk_widget_get_scale_factor (<span class='macro'>GTK_WIDGET (netspeed)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed)))))</span></span>);</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='comment'>/* If the user wants a different icon than current, we load it */</span></td></tr> +<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='keyword'>if</span> (netspeed->show_icon && netspeed->change_icon && netspeed->devinfo) {</td></tr> +<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> dev = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> dev_type_icon [netspeed->devinfo->type],</td></tr> +<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> icon_size, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <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"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> dev = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> dev_type_icon [DEV_UNKNOWN],</td></tr> +<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> icon_size, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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='comment'>/* We need a fallback */</span></td></tr> +<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='keyword'>if</span> (dev == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> dev = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> dev_type_icon [DEV_UNKNOWN],</td></tr> +<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> icon_size, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> in_arrow = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> IN_ICON,</td></tr> +<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> 16, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> out_arrow = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> OUT_ICON,</td></tr> +<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> 16, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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='comment'>/* Set the windowmanager icon for the applet */</span></td></tr> +<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> gtk_window_set_default_icon_name (LOGO_ICON);</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"> gtk_image_set_from_surface (<span class='macro'>GTK_IMAGE (netspeed->out_pix)<span class='macro_popup'>((((GtkImage*) (void *) ((netspeed->out_pix)))))</span></span>, out_arrow);</td></tr> +<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> gtk_image_set_from_surface (<span class='macro'>GTK_IMAGE (netspeed->in_pix)<span class='macro_popup'>((((GtkImage*) (void *) ((netspeed->in_pix)))))</span></span>, in_arrow);</td></tr> +<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> cairo_surface_destroy (in_arrow);</td></tr> +<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> cairo_surface_destroy (out_arrow);</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'>if</span> (netspeed->devinfo && netspeed->devinfo->running) {</td></tr> +<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> gtk_widget_show (netspeed->in_box);</td></tr> +<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> gtk_widget_show (netspeed->out_box);</td></tr> +<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> cairo_t *cr;</td></tr> +<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> cairo_surface_t *copy;</td></tr> +<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> gint down_coords;</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"> gtk_widget_hide (netspeed->in_box);</td></tr> +<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> gtk_widget_hide (netspeed->out_box);</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='comment'>/* We're not allowed to modify "dev" */</span></td></tr> +<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> copy = cairo_surface_create_similar (dev,</td></tr> +<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> cairo_surface_get_content (dev),</td></tr> +<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> cairo_image_surface_get_width (dev) / icon_scale,</td></tr> +<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> cairo_image_surface_get_height (dev) / icon_scale);</td></tr> +<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> cr = cairo_create (copy);</td></tr> +<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> cairo_set_source_surface (cr, dev, 0, 0);</td></tr> +<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> cairo_paint (cr);</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"> down = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> ERROR_ICON,</td></tr> +<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> icon_size, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> down_coords = cairo_image_surface_get_width (copy) / icon_scale;</td></tr> +<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> cairo_scale (cr, 0.5, 0.5);</td></tr> +<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> cairo_set_operator (cr, CAIRO_OPERATOR_OVER);</td></tr> +<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> cairo_set_source_surface (cr, down, down_coords, down_coords);</td></tr> +<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> cairo_paint (cr);</td></tr> +<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> cairo_surface_destroy (down);</td></tr> +<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> cairo_surface_destroy (dev);</td></tr> +<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> dev = copy;</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"> </td></tr> +<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> <span class='keyword'>if</span> (netspeed->show_icon) {</td></tr> +<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> gtk_widget_show (netspeed->dev_pix);</td></tr> +<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> gtk_image_set_from_surface (<span class='macro'>GTK_IMAGE (netspeed->dev_pix)<span class='macro_popup'>((((GtkImage*) (void *) ((netspeed->dev_pix)))))</span></span>, dev);</td></tr> +<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> gtk_widget_hide (netspeed->dev_pix);</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"> </td></tr> +<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> cairo_surface_destroy (dev);</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"> </td></tr> +<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"><span class='comment'>/* Here some rearangement of the icons and the labels occurs</span></td></tr> +<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> <span class='comment'>* according to the panelsize and wether we show in and out</span></td></tr> +<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='comment'>* or just the sum</span></td></tr> +<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">applet_change_size_or_orient (MatePanelApplet *applet,</td></tr> +<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='keyword'>int</span> arg1,</td></tr> +<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> NetspeedApplet *netspeed)</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'>int</span> size;</td></tr> +<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> MatePanelAppletOrient orient;</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='macro'>g_assert (netspeed)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_15<br>; if (netspeed) _g_boolean_var_15 = 1; else _g_boolean_var_15<br> = 0; _g_boolean_var_15; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "netspeed.c", 286, ((const char*) (__func__))<br>, "netspeed"); } while (0)</span></span>;</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"> size = mate_panel_applet_get_size (applet);</td></tr> +<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> orient = mate_panel_applet_get_orient (applet);</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"> <span class='macro'>g_object_ref (netspeed->pix_box)<span class='macro_popup'>((__typeof__ (netspeed->pix_box)) (g_object_ref) (netspeed<br>->pix_box))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> <span class='macro'>g_object_ref (netspeed->in_pix)<span class='macro_popup'>((__typeof__ (netspeed->in_pix)) (g_object_ref) (netspeed-><br>in_pix))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='macro'>g_object_ref (netspeed->in_label)<span class='macro_popup'>((__typeof__ (netspeed->in_label)) (g_object_ref) (netspeed<br>->in_label))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='macro'>g_object_ref (netspeed->out_pix)<span class='macro_popup'>((__typeof__ (netspeed->out_pix)) (g_object_ref) (netspeed<br>->out_pix))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span class='macro'>g_object_ref (netspeed->out_label)<span class='macro_popup'>((__typeof__ (netspeed->out_label)) (g_object_ref) (netspeed<br>->out_label))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='macro'>g_object_ref (netspeed->sum_label)<span class='macro_popup'>((__typeof__ (netspeed->sum_label)) (g_object_ref) (netspeed<br>->sum_label))</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"> <span class='keyword'>if</span> (netspeed->in_box) {</td></tr> +<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> gtk_container_remove (<span class='macro'>GTK_CONTAINER (netspeed->in_box)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed->in_box)))))</span></span>, netspeed->in_label);</td></tr> +<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> gtk_container_remove (<span class='macro'>GTK_CONTAINER (netspeed->in_box)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed->in_box)))))</span></span>, netspeed->in_pix);</td></tr> +<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> gtk_widget_destroy (netspeed->in_box);</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'>if</span> (netspeed->out_box) {</td></tr> +<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> gtk_container_remove (<span class='macro'>GTK_CONTAINER (netspeed->out_box)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed->out_box)))))</span></span>, netspeed->out_label);</td></tr> +<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> gtk_container_remove (<span class='macro'>GTK_CONTAINER (netspeed->out_box)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed->out_box)))))</span></span>, netspeed->out_pix);</td></tr> +<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> gtk_widget_destroy (netspeed->out_box);</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'>if</span> (netspeed->sum_box) {</td></tr> +<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> gtk_container_remove (<span class='macro'>GTK_CONTAINER (netspeed->sum_box)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed->sum_box)))))</span></span>, netspeed->sum_label);</td></tr> +<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> gtk_widget_destroy (netspeed->sum_box);</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> (netspeed->box) {</td></tr> +<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> gtk_container_remove (<span class='macro'>GTK_CONTAINER (netspeed->box)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed->box)))))</span></span>, netspeed->pix_box);</td></tr> +<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> gtk_widget_destroy (netspeed->box);</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"> </td></tr> +<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>if</span> (orient == MATE_PANEL_APPLET_ORIENT_LEFT || orient == MATE_PANEL_APPLET_ORIENT_RIGHT) {</td></tr> +<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> netspeed->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr> +<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> netspeed->speed_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr> +<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span class='keyword'>if</span> (size > 64) {</td></tr> +<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> netspeed->sum_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);</td></tr> +<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> netspeed->in_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);</td></tr> +<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> netspeed->out_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);</td></tr> +<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> netspeed->sum_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr> +<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> netspeed->in_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr> +<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> netspeed->out_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr> +<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> netspeed->labels_dont_shrink = <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"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> netspeed->in_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);</td></tr> +<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> netspeed->out_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);</td></tr> +<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> netspeed->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);</td></tr> +<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> netspeed->sum_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);</td></tr> +<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='keyword'>if</span> (size < 48) {</td></tr> +<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> netspeed->speed_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 1);</td></tr> +<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> netspeed->labels_dont_shrink = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> netspeed->speed_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr> +<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> netspeed->labels_dont_shrink = !netspeed->show_sum;</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"> }</td></tr> +<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->in_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->in_box)))))</span></span>, netspeed->in_pix, <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="345"><td class="num" id="LN345">345</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->in_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->in_box)))))</span></span>, netspeed->in_label, <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="346"><td class="num" id="LN346">346</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->out_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->out_box)))))</span></span>, netspeed->out_pix, <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="347"><td class="num" id="LN347">347</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->out_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->out_box)))))</span></span>, netspeed->out_label, <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="348"><td class="num" id="LN348">348</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->sum_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->sum_box)))))</span></span>, netspeed->sum_label, <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="349"><td class="num" id="LN349">349</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->box)))))</span></span>, netspeed->pix_box, <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="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"> g_object_unref (netspeed->pix_box);</td></tr> +<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> g_object_unref (netspeed->in_pix);</td></tr> +<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> g_object_unref (netspeed->in_label);</td></tr> +<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> g_object_unref (netspeed->out_pix);</td></tr> +<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> g_object_unref (netspeed->out_label);</td></tr> +<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> g_object_unref (netspeed->sum_label);</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'>if</span> (netspeed->show_sum) {</td></tr> +<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->speed_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->speed_box)))))</span></span>, netspeed->sum_box, <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="360"><td class="num" id="LN360">360</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->speed_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->speed_box)))))</span></span>, netspeed->in_box, <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="362"><td class="num" id="LN362">362</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->speed_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->speed_box)))))</span></span>, netspeed->out_box, <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="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"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->box)))))</span></span>, netspeed->speed_box, <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="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"> gtk_widget_show_all (netspeed->box);</td></tr> +<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='keyword'>if</span> (!netspeed->show_icon) {</td></tr> +<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> gtk_widget_hide (netspeed->dev_pix);</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"> gtk_container_add (<span class='macro'>GTK_CONTAINER (netspeed)<span class='macro_popup'>((((GtkContainer*) (void *) ((netspeed)))))</span></span>, netspeed->box);</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"> change_icons (netspeed);</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"> </td></tr> +<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"><span class='comment'>/* Change visibility of signal quality icon for wireless devices</span></td></tr> +<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line">change_quality_icon (NetspeedApplet *netspeed)</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='keyword'>if</span> (netspeed->devinfo->type == DEV_WIRELESS &&</td></tr> +<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> netspeed->devinfo->up && netspeed->show_quality_icon) {</td></tr> +<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> gtk_widget_show (netspeed->qual_pix);</td></tr> +<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> gtk_widget_hide (netspeed->qual_pix);</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">}</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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">update_quality_icon (NetspeedApplet *netspeed)</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'>if</span> (!netspeed->show_quality_icon) {</td></tr> +<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> <span class='keyword'>return</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"> </td></tr> +<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>int</span> q;</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"> q = (netspeed->devinfo->qual);</td></tr> +<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> q /= 25;</td></tr> +<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> q = <span class='macro'>MIN (q, 3)<span class='macro_popup'>(((q) < (3)) ? (q) : (3))</span></span>; <span class='comment'>/* q out of range would crash when accessing qual_surfaces[q] */</span></td></tr> +<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> gtk_image_set_from_surface (<span class='macro'>GTK_IMAGE (netspeed->qual_pix)<span class='macro_popup'>((((GtkImage*) (void *) ((netspeed->qual_pix)))))</span></span>, netspeed->qual_surfaces[q]);</td></tr> +<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line">}</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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">init_quality_surfaces (NetspeedApplet *netspeed)</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'>int</span> i;</td></tr> +<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> cairo_surface_t *surface;</td></tr> +<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> gint icon_scale;</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"> <span class='comment'>/* FIXME: Add larger icon files. */</span></td></tr> +<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> gint icon_size = 24;</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"> icon_scale = gtk_widget_get_scale_factor (<span class='macro'>GTK_WIDGET (netspeed)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed)))))</span></span>);</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'>for</span> (i = 0; i < 4; i++) {</td></tr> +<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span class='keyword'>if</span> (netspeed->qual_surfaces[i])</td></tr> +<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> cairo_surface_destroy (netspeed->qual_surfaces[i]);</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"> surface = gtk_icon_theme_load_surface (netspeed->icon_theme,</td></tr> +<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> wireless_quality_icon[i],</td></tr> +<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> icon_size, icon_scale, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></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"> <span class='keyword'>if</span> (surface) {</td></tr> +<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> cairo_t *cr;</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"> netspeed->qual_surfaces[i] = cairo_surface_create_similar (surface,</td></tr> +<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> cairo_surface_get_content (surface),</td></tr> +<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> cairo_image_surface_get_width (surface) / icon_scale,</td></tr> +<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> cairo_image_surface_get_height (surface) / icon_scale);</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"> cr = cairo_create (netspeed->qual_surfaces[i]);</td></tr> +<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> cairo_set_source_surface (cr, surface, 0, 0);</td></tr> +<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> cairo_paint (cr);</td></tr> +<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> cairo_surface_destroy (surface);</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"> <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> netspeed->qual_surfaces[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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">}</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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line">icon_theme_changed_cb (GtkIconTheme *icon_theme,</td></tr> +<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> NetspeedApplet *netspeed)</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"> init_quality_surfaces (netspeed);</td></tr> +<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->type == DEV_WIRELESS && netspeed->devinfo->up)</td></tr> +<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> update_quality_icon (netspeed);</td></tr> +<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> change_icons (netspeed);</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"> </td></tr> +<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"><span class='directive'>#define <span class='macro'>IEC_KIBI_DBL<span class='macro_popup'>1024.0</span></span> 1024.0</span></td></tr> +<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"><span class='directive'>#define <span class='macro'>IEC_MEBI_DBL<span class='macro_popup'>1024.0*1024.0</span></span> 1024.0*1024.0</span></td></tr> +<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"><span class='directive'>#define <span class='macro'>IEC_GIBI_DBL<span class='macro_popup'>1024.0*1024.0*1024.0</span></span> 1024.0*1024.0*1024.0</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"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line">format_transfer_rate (gchar *out,</td></tr> +<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='keyword'>double</span> bytes,</td></tr> +<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> gboolean bits)</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'>const</span> <span class='keyword'>char</span> *format;</td></tr> +<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *unit;</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'>if</span> (bits)</td></tr> +<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> bytes *= 8.0;</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'>if</span> (bytes < <span class='macro'>IEC_KIBI_DBL<span class='macro_popup'>1024.0</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> format = <span class='string_literal'>"%.0f %s"</span>;</td></tr> +<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> unit = bits ? <span class='comment'>/* translators: bits (short) */</span> <span class='macro'>N_(<span class='string_literal'>"bit/s"</span>)<span class='macro_popup'>("bit/s")</span></span>: <span class='comment'>/* translators: Bytes (short) */</span> <span class='macro'>N_(<span class='string_literal'>"B/s"</span>)<span class='macro_popup'>("B/s")</span></span>;</td></tr> +<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (bytes < <span class='macro'>IEC_MEBI_DBL<span class='macro_popup'>1024.0*1024.0</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> format = (bytes < (100.0 * <span class='macro'>IEC_KIBI_DBL<span class='macro_popup'>1024.0</span></span>)) ? <span class='string_literal'>"%.1f %s"</span> : <span class='string_literal'>"%.0f %s"</span>;</td></tr> +<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> bytes /= <span class='macro'>IEC_KIBI_DBL<span class='macro_popup'>1024.0</span></span>;</td></tr> +<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> unit = bits ? <span class='comment'>/* translators: kibibits (short) */</span> <span class='macro'>N_(<span class='string_literal'>"Kibit/s"</span>)<span class='macro_popup'>("Kibit/s")</span></span> : <span class='comment'>/* translators: Kibibytes (short) */</span> <span class='macro'>N_(<span class='string_literal'>"KiB/s"</span>)<span class='macro_popup'>("KiB/s")</span></span>;</td></tr> +<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (bytes < <span class='macro'>IEC_GIBI_DBL<span class='macro_popup'>1024.0*1024.0*1024.0</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> format = <span class='string_literal'>"%.1f %s"</span>;</td></tr> +<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> bytes /= <span class='macro'>IEC_MEBI_DBL<span class='macro_popup'>1024.0*1024.0</span></span>;</td></tr> +<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> unit = bits ? <span class='comment'>/* translators: Mebibit (short) */</span> <span class='macro'>N_(<span class='string_literal'>"Mibit/s"</span>)<span class='macro_popup'>("Mibit/s")</span></span> : <span class='comment'>/* translators: Mebibyte (short) */</span> <span class='macro'>N_(<span class='string_literal'>"MiB/s"</span>)<span class='macro_popup'>("MiB/s")</span></span>;</td></tr> +<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> format = <span class='string_literal'>"%.1f %s"</span>;</td></tr> +<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> bytes /= <span class='macro'>IEC_GIBI_DBL<span class='macro_popup'>1024.0*1024.0*1024.0</span></span>;</td></tr> +<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> unit = bits ? <span class='comment'>/* translators: Gibibit (short) */</span> <span class='macro'>N_(<span class='string_literal'>"Gibit/s"</span>)<span class='macro_popup'>("Gibit/s")</span></span> : <span class='comment'>/* translators: Gibibyte (short) */</span> <span class='macro'>N_(<span class='string_literal'>"GiB/s"</span>)<span class='macro_popup'>("GiB/s")</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"> </td></tr> +<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> g_snprintf (out, <span class='macro'>MAX_FORMAT_SIZE<span class='macro_popup'>15</span></span>, format, bytes, <span class='macro'>gettext (unit)<span class='macro_popup'>dcgettext (((void*)0), unit, 5)</span></span>);</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"><span class='comment'>/* Converts a number of bytes into a human</span></td></tr> +<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='comment'>* readable string - in [M/k]bytes[/s]</span></td></tr> +<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='comment'>* The string has to be freed</span></td></tr> +<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span>*</td></tr> +<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line">bps_to_string (<span class='keyword'>double</span> bytes,</td></tr> +<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> gboolean bits)</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"> <span class='keyword'>char</span> res[<span class='macro'>MAX_FORMAT_SIZE<span class='macro_popup'>15</span></span>];</td></tr> +<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> format_transfer_rate (res, bytes, bits);</td></tr> +<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_strdup (res)<span class='macro_popup'>g_strdup_inline (res)</span></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='comment'>/* Redraws the graph drawingarea</span></td></tr> +<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> <span class='comment'>* Some really black magic is going on in here ;-)</span></td></tr> +<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='comment'>*/</span></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">redraw_graph (NetspeedApplet *netspeed,</td></tr> +<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> cairo_t *cr)</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"> GtkWidget *da = <span class='macro'>GTK_WIDGET (netspeed->drawingarea)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed->drawingarea)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> GtkStyleContext *stylecontext = gtk_widget_get_style_context (da);</td></tr> +<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> GdkWindow *real_window = gtk_widget_get_window (da);</td></tr> +<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> GdkPoint in_points[<span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>], out_points[<span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>];</td></tr> +<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> PangoLayout *layout;</td></tr> +<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> PangoRectangle logical_rect;</td></tr> +<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='keyword'>char</span> *text;</td></tr> +<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='keyword'>int</span> i, offset, w, h;</td></tr> +<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> <span class='keyword'>double</span> max_val;</td></tr> +<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> <span class='keyword'>double</span> dash[2] = { 1.0, 2.0 };</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"> w = gdk_window_get_width (real_window);</td></tr> +<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> h = gdk_window_get_height (real_window);</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"> <span class='comment'>/* the graph hight should be: hight/2 <= netspeed->max_graph < hight */</span></td></tr> +<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='keyword'>for</span> (max_val = 1; max_val < netspeed->max_graph; max_val *= 2) ;</td></tr> +<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>/* calculate the polygons (GdkPoint[]) for the graphs */</span></td></tr> +<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> offset = 0;</td></tr> +<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>for</span> (i = (netspeed->index_graph + 1) % <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; netspeed->in_graph[i] < 0; i = (i + 1) % <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>)</td></tr> +<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> offset++;</td></tr> +<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>for</span> (i = offset + 1; i < <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; i++)</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'>int</span> index = (netspeed->index_graph + i) % <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>;</td></tr> +<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> out_points[i].x = in_points[i].x = ((w - 6) * i) / <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span> + 4;</td></tr> +<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> in_points[i].y = h - 6 - (<span class='keyword'>int</span>)((h - 8) * netspeed->in_graph[index] / max_val);</td></tr> +<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> out_points[i].y = h - 6 - (<span class='keyword'>int</span>)((h - 8) * netspeed->out_graph[index] / max_val);</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"> in_points[offset].x = out_points[offset].x = ((w - 6) * offset) / <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span> + 4;</td></tr> +<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> in_points[offset].y = in_points[(offset + 1) % <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>].y;</td></tr> +<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> out_points[offset].y = out_points[(offset + 1) % <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>].y;</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='comment'>/* draw the background */</span></td></tr> +<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);</td></tr> +<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> cairo_rectangle (cr, 02, 2, w - 6, h - 6);</td></tr> +<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> cairo_fill (cr);</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"> cairo_set_line_width (cr, 1.0);</td></tr> +<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> cairo_set_dash (cr, dash, 2, 0);</td></tr> +<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);</td></tr> +<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> cairo_rectangle (cr, 2, 2, w - 6, h - 6);</td></tr> +<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> cairo_stroke (cr);</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"> <span class='keyword'>for</span> (i = 0; i < <span class='macro'>GRAPH_LINES<span class='macro_popup'>4</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='keyword'>int</span> y = 2 + ((h - 6) * i) / <span class='macro'>GRAPH_LINES<span class='macro_popup'>4</span></span>;</td></tr> +<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> cairo_move_to (cr, 2, y);</td></tr> +<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> cairo_line_to (cr, w - 4, y);</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"> cairo_stroke (cr);</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'>/* draw the polygons */</span></td></tr> +<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> cairo_set_dash (cr, dash, 0, 1);</td></tr> +<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);</td></tr> +<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);</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"> gdk_cairo_set_source_rgba (cr, &netspeed->in_color);</td></tr> +<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> <span class='keyword'>for</span> (i = offset; i < <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> cairo_line_to (cr, in_points[i].x, in_points[i].y);</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"> cairo_stroke (cr);</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"> gdk_cairo_set_source_rgba (cr, &netspeed->out_color);</td></tr> +<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>for</span> (i = offset; i < <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> cairo_line_to (cr, out_points[i].x, out_points[i].y);</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"> cairo_stroke (cr);</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"> text = bps_to_string (max_val, netspeed->show_bits);</td></tr> +<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> add_markup_fgcolor (&text, <span class='string_literal'>"black"</span>);</td></tr> +<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> layout = gtk_widget_create_pango_layout (da, <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"> pango_layout_set_markup (layout, text, -1);</td></tr> +<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> g_free (text);</td></tr> +<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> gtk_render_layout (stylecontext, cr, 3, 2, layout);</td></tr> +<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> g_object_unref (<span class='macro'>G_OBJECT (layout)<span class='macro_popup'>((((GObject*) (void *) ((layout)))))</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"> text = bps_to_string (0.0, netspeed->show_bits);</td></tr> +<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> add_markup_fgcolor (&text, <span class='string_literal'>"black"</span>);</td></tr> +<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> layout = gtk_widget_create_pango_layout (da, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> pango_layout_set_markup (layout, text, -1);</td></tr> +<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> pango_layout_get_pixel_extents (layout, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &logical_rect);</td></tr> +<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> g_free (text);</td></tr> +<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> gtk_render_layout (stylecontext, cr, 3, h - 4 - logical_rect.height, layout);</td></tr> +<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> g_object_unref (<span class='macro'>G_OBJECT (layout)<span class='macro_popup'>((((GObject*) (void *) ((layout)))))</span></span>);</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> gboolean</td></tr> +<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">set_applet_devinfo (NetspeedApplet *netspeed,</td></tr> +<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *iface)</td></tr> +<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> DevInfo *info;</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"> get_device_info (iface, &info);</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'>if</span> (info->running) {</td></tr> +<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> free_device_info (netspeed->devinfo);</td></tr> +<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> netspeed->devinfo = info;</td></tr> +<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> netspeed->device_has_changed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</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="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"> </td></tr> +<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> free_device_info (info);</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'>FALSE<span class='macro_popup'>(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"><span class='comment'>/* Find the first available device, that is running and != lo */</span></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'>void</span></td></tr> +<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">search_for_up_if (NetspeedApplet *netspeed)</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'>const</span> gchar *default_route;</td></tr> +<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> GList *devices, *tmp;</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"> default_route = get_default_route ();</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"> <span class='keyword'>if</span> (default_route != <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'>if</span> (set_applet_devinfo (netspeed, default_route))</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"> devices = get_available_devices ();</td></tr> +<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='keyword'>for</span> (tmp = devices; tmp; tmp = <span class='macro'>g_list_next (tmp)<span class='macro_popup'>((tmp) ? (((GList *)(tmp))->next) : ((void*)0))</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> <span class='keyword'>if</span> (is_dummy_device (tmp->data))</td></tr> +<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> <span class='keyword'>continue</span>;</td></tr> +<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> <span class='keyword'>if</span> (set_applet_devinfo (netspeed, tmp->data))</td></tr> +<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>break</span>;</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"> g_list_free_full (devices, g_free);</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> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line">format_time (guint32 sec)</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'>char</span> *res;</td></tr> +<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> <span class='keyword'>char</span> *m, *s;</td></tr> +<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> <span class='keyword'>int</span> seconds;</td></tr> +<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='keyword'>int</span> minutes;</td></tr> +<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='keyword'>int</span> hours;</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"> <span class='keyword'>if</span> (sec < 60)</td></tr> +<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>return</span> g_strdup_printf (<span class='macro'>ngettext (<span class='string_literal'>"%'"</span> G_GUINT32_FORMAT <span class='string_literal'>" second"</span>,<span class='string_literal'>"%'"</span> G_GUINT32_FORMAT <span class='string_literal'>" seconds"</span>, sec)<span class='macro_popup'>dcngettext (((void*)0), "%'" "u" " second", "%'" "u" " seconds"<br>, sec, 5)</span></span>, sec);</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"> hours = (sec/3600);</td></tr> +<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> minutes = (sec -(3600*hours))/60;</td></tr> +<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> seconds = (sec -(3600*hours)-(minutes*60));</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"> m = g_strdup_printf (<span class='macro'>ngettext (<span class='string_literal'>"%'d minute"</span>, <span class='string_literal'>"%'d minutes"</span>, minutes)<span class='macro_popup'>dcngettext (((void*)0), "%'d minute", "%'d minutes", minutes,<br> 5)</span></span>, minutes);</td></tr> +<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> s = g_strdup_printf (<span class='macro'>ngettext (<span class='string_literal'>"%'d secon"</span>, <span class='string_literal'>"%'d seconds"</span>, seconds)<span class='macro_popup'>dcngettext (((void*)0), "%'d secon", "%'d seconds", seconds, 5<br>)</span></span>, seconds);</td></tr> +<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> <span class='keyword'>if</span> (sec < 60*60) {</td></tr> +<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> res = g_strconcat (m, <span class='string_literal'>", "</span>, s, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>char</span> *h;</td></tr> +<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> h = g_strdup_printf (<span class='macro'>ngettext (<span class='string_literal'>"%'d hour"</span>, <span class='string_literal'>"%'d hours"</span>, hours)<span class='macro_popup'>dcngettext (((void*)0), "%'d hour", "%'d hours", hours, 5)</span></span>, hours);</td></tr> +<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> res = g_strconcat (h, <span class='string_literal'>", "</span>, m, <span class='string_literal'>", "</span>, s, <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"> g_free (h);</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_free (m);</td></tr> +<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> g_free (s);</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='keyword'>return</span> res;</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"><span id="start1"><span class='keyword'>static</span></span> <span class='keyword'>char</span> *</td></tr> +<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line">mac_addr_n2a (<span class='keyword'>const</span> <span class='keyword'>unsigned</span> <span class='keyword'>char</span> *hw)</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"> <span id="start0"><span id="end1"><span class='keyword'>if</span></span></span> (<span class="mrange"><span id="end0">hw</span>[6]</span> || hw[7]) {</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">25</div></td><td><div class="PathNav"><a href="#Path24" title="Previous event (24)">←</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="672"><td class="num" id="LN672">672</td><td class="line"> <span class='keyword'>return</span> g_strdup_printf (<span class='string_literal'>"%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x"</span>,</td></tr> +<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> hw[0], hw[1], hw[2], hw[3],</td></tr> +<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> hw[4], hw[5], hw[6], hw[7]);</td></tr> +<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>return</span> g_strdup_printf (<span class='string_literal'>"%02x:%02x:%02x:%02x:%02x:%02x"</span>,</td></tr> +<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> hw[0], hw[1], hw[2],</td></tr> +<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> hw[3], hw[4], hw[5]);</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"> </td></tr> +<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line">format_ipv4 (guint32 ip,</td></tr> +<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='keyword'>char</span> *dest)</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"> inet_ntop (<span class='macro'>AF_INET<span class='macro_popup'>2</span></span>, &ip, dest, <span class='macro'>INET_ADDRSTRLEN<span class='macro_popup'>16</span></span>);</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 id="start44"><span class='keyword'>static</span></span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line">fill_details_dialog (NetspeedApplet *netspeed)</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 id="start43"><span id="end44"><span class='keyword'>char</span></span></span> *text;</td></tr> +<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> <span class='keyword'>char</span> ipv4_text [<span class='macro'>INET_ADDRSTRLEN<span class='macro_popup'>16</span></span>];</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 id="start42"><span id="end43"><span class='keyword'>if</span></span></span> (<span id="start41"><span class="mrange"><span id="end42">netspeed</span></span>->devinfo->ip</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming field 'ip' is 0</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> format_ipv4 (netspeed->devinfo->ip, ipv4_text);</td></tr> +<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> text = ipv4_text;</td></tr> +<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span id="start38"><span id="end39"><span id="start40"><span id="end41">text</span></span></span></span> = <span id="start39"><span id="end40"><span class='macro'>_</span></span>(<span class='string_literal'>"none"</span>)<span class='macro_popup'>dcgettext (((void*)0), "none", 5)</span></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 id="start37"><span id="end38">gtk_label_set_text</span></span> (<span class='macro'>GTK_LABEL (netspeed->ip_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->ip_text)))))</span></span>, text);</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"> <span id="start36"><span id="end37"><span class='keyword'>if</span></span></span> (<span id="start35"><span class="mrange"><span id="end36">netspeed</span></span>->devinfo->netmask</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming field 'netmask' is 0</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> format_ipv4 (netspeed->devinfo->netmask, ipv4_text);</td></tr> +<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> text = ipv4_text;</td></tr> +<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> <span id="start32"><span id="end33"><span id="start34"><span id="end35">text</span></span></span></span> = <span id="start33"><span id="end34"><span class='macro'>_</span></span>(<span class='string_literal'>"none"</span>)<span class='macro_popup'>dcgettext (((void*)0), "none", 5)</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"> <span id="start31"><span id="end32">gtk_label_set_text</span></span> (<span class='macro'>GTK_LABEL (netspeed->netmask_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->netmask_text)))))</span></span>, text);</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"> <span id="start30"><span id="end31"><span class='keyword'>if</span></span></span> (<span id="start29"><span class="mrange"><span id="end30">netspeed</span></span>->devinfo->type != DEV_LO</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming field 'type' is not equal to DEV_LO</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">→</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:5ex"><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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span id="start26"><span id="end27"><span id="start28"><span id="end29">text</span></span></span></span> = mac_addr_n2a (<span id="start27"><span id="end28">netspeed</span></span>->devinfo->hwaddr);</td></tr> +<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->hwaddr_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->hwaddr_text)))))</span></span>, text);</td></tr> +<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> <span id="start25"><span id="end26">g_free</span></span> (text);</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"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->hwaddr_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->hwaddr_text)))))</span></span>, <span class='macro'>_(<span class='string_literal'>"none"</span>)<span class='macro_popup'>dcgettext (((void*)0), "none", 5)</span></span>);</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 id="start24"><span id="end25"><span class='keyword'>if</span></span></span> (<span id="start23"><span class="mrange"><span id="end24">netspeed</span></span>->devinfo->ptpip</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming field 'ptpip' is 0</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> format_ipv4 (netspeed->devinfo->ptpip, ipv4_text);</td></tr> +<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> text = ipv4_text;</td></tr> +<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</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"><span class='macro'>_</span></span>(<span class='string_literal'>"none"</span>)<span class='macro_popup'>dcgettext (((void*)0), "none", 5)</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"> <span id="start19"><span id="end20">gtk_label_set_text</span></span> (<span class='macro'>GTK_LABEL (netspeed->ptpip_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->ptpip_text)))))</span></span>, text);</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='comment'>/* check if we got an ipv6 address */</span></td></tr> +<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> GSList *ipv6_address_list = get_ip_address_list (netspeed->devinfo->name, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span id="start18"><span id="end19"><span class='keyword'>if</span></span></span> (<span id="start17"><span class="mrange"><span id="end18">ipv6_address_list</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:9ex"><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)">←</a></div></td><td>Assuming 'ipv6_address_list' is equal to NULL</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> GSList *iterator;</td></tr> +<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> GString *string = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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='keyword'>for</span> (iterator = ipv6_address_list; iterator; iterator = iterator->next) {</td></tr> +<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='keyword'>if</span> (string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> string = g_string_new ((<span class='keyword'>char</span>*) iterator->data);</td></tr> +<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> g_string_append_printf (string, <span class='string_literal'>"\n%s"</span>, (<span class='keyword'>char</span>*) iterator->data);</td></tr> +<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> <span class='keyword'>if</span> (string != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->ipv6_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->ipv6_text)))))</span></span>, string->str);</td></tr> +<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> gtk_widget_show (netspeed->ipv6_box);</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='macro'>g_string_free (string, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(string), ((!(0)))) : g_string_free_and_steal (string)) : (g_string_free<br>) ((string), ((!(0)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> g_slist_free_full (ipv6_address_list, g_free);</td></tr> +<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span id="start14"><span id="end15"><span id="start16"><span id="end17">gtk_widget_hide</span></span></span></span> (<span id="start15"><span id="end16">netspeed</span></span>->ipv6_box);</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 id="start13"><span id="end14"><span class='keyword'>if</span></span></span> (<span id="start12"><span class="mrange"><span id="end13">netspeed</span></span>->devinfo->type == DEV_WIRELESS</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming field 'type' is equal to DEV_WIRELESS</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">→</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:5ex"><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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span id="start11"><span id="end12"><span class='keyword'>float</span></span></span> quality;</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='comment'>/* _maybe_ we can add the encrypted icon between the essid and the signal bar. */</span></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"> quality = netspeed->devinfo->qual / 100.0f;</td></tr> +<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span id="start10"><span id="end11"><span class='keyword'>if</span></span></span> (<span id="start9"><span class="mrange"><span id="end10">quality</span></span> > 1.0</span>)</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgEvent" style="margin-left:13ex"><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)">←</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">→</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:9ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> quality = 1.0;</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 id="start6"><span id="end7"><span id="start8"><span id="end9">text</span></span></span></span> = g_strdup_printf (<span class='string_literal'>"%d %%"</span>, <span id="start7"><span id="end8">netspeed</span></span>->devinfo->qual);</td></tr> +<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> gtk_progress_bar_set_fraction (<span class='macro'>GTK_PROGRESS_BAR (netspeed->signalbar)<span class='macro_popup'>((((GtkProgressBar*) (void *) ((netspeed->signalbar)))))</span></span>, quality);</td></tr> +<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> gtk_progress_bar_set_text (<span class='macro'>GTK_PROGRESS_BAR (netspeed->signalbar)<span class='macro_popup'>((((GtkProgressBar*) (void *) ((netspeed->signalbar)))))</span></span>, text);</td></tr> +<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> g_free (text);</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"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->essid_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->essid_text)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> netspeed->devinfo->essid);</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='directive'>#ifdef <span class='macro'>HAVE_NL<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span id="start5"><span id="end6"><span class='keyword'>if</span></span></span> (<span id="start4"><span class="mrange"><span id="end5">netspeed</span></span>->devinfo->running</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgEvent" style="margin-left:13ex"><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)">←</a></div></td><td>Assuming field 'running' is not equal to 0</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">→</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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path24" title="Next event (24)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span id="start3"><span id="end4">text</span></span> = <span class="mrange"><span id="end2">mac_addr_n2a</span> (<span id="start2"><span id="end3">netspeed</span></span>->devinfo->station_mac_addr)</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path24" class="msg msgEvent" style="margin-left:20ex"><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)">←</a></div></td><td>Calling 'mac_addr_n2a'</td><td><div class="PathNav"><a href="#EndPath" title="Next event (25)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->station_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->station_text)))))</span></span>, text);</td></tr> +<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> g_free (text);</td></tr> +<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->station_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->station_text)))))</span></span>, <span class='macro'>_(<span class='string_literal'>"unknown"</span>)<span class='macro_popup'>dcgettext (((void*)0), "unknown", 5)</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"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->channel_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->channel_text)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> netspeed->devinfo->channel ? netspeed->devinfo->channel : <span class='macro'>_(<span class='string_literal'>"unknown"</span>)<span class='macro_popup'>dcgettext (((void*)0), "unknown", 5)</span></span>);</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"> text = format_time (netspeed->devinfo->connected_time);</td></tr> +<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->connected_time_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->connected_time_text)))<br>))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> netspeed->devinfo->connected_time > 0 ? text : <span class='macro'>_(<span class='string_literal'>"na"</span>)<span class='macro_popup'>dcgettext (((void*)0), "na", 5)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> g_free (text);</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"> gtk_widget_show (netspeed->netlink_box);</td></tr> +<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"><span class='directive'>#else</span></td></tr> +<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> gtk_widget_hide (netspeed->netlink_box);</td></tr> +<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"><span class='directive'>#endif /* HAVE_NL */</span></td></tr> +<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> gtk_widget_show (netspeed->wireless_box);</td></tr> +<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> gtk_widget_hide (netspeed->wireless_box);</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"> </td></tr> +<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"><span class='comment'>/* Here happens the really interesting stuff */</span></td></tr> +<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line">update_applet (NetspeedApplet *netspeed)</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"> guint64 indiff, outdiff;</td></tr> +<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> <span class='keyword'>double</span> inrate, outrate;</td></tr> +<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='keyword'>char</span> *inbytes, *outbytes;</td></tr> +<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> <span class='keyword'>int</span> i;</td></tr> +<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> DevInfo *oldinfo;</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'>if</span> (!netspeed) <span class='keyword'>return</span>;</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"> <span class='comment'>/* First we try to figure out if the device has changed */</span></td></tr> +<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> oldinfo = netspeed->devinfo;</td></tr> +<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> get_device_info (oldinfo->name, &netspeed->devinfo);</td></tr> +<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='keyword'>if</span> (compare_device_info (netspeed->devinfo, oldinfo))</td></tr> +<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> netspeed->device_has_changed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> free_device_info (oldinfo);</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='comment'>/* If the device has changed, reintialize stuff */</span></td></tr> +<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>if</span> (netspeed->device_has_changed) {</td></tr> +<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> change_icons (netspeed);</td></tr> +<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> change_quality_icon (netspeed);</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'>for</span> (i = 0; i < <span class='macro'>OLD_VALUES<span class='macro_popup'>5</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> netspeed->in_old[i] = netspeed->devinfo->rx;</td></tr> +<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> netspeed->out_old[i] = netspeed->devinfo->tx;</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"> </td></tr> +<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> netspeed->in_graph[i] = -1;</td></tr> +<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> netspeed->out_graph[i] = -1;</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"> </td></tr> +<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> netspeed->max_graph = 0;</td></tr> +<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> netspeed->index_graph = 0;</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"> <span class='keyword'>if</span> (netspeed->details) {</td></tr> +<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> fill_details_dialog (netspeed);</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"> netspeed->device_has_changed = <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='comment'>/* create the strings for the labels and tooltips */</span></td></tr> +<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->running) {</td></tr> +<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->rx < netspeed->in_old[netspeed->index_old])</td></tr> +<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> indiff = 0;</td></tr> +<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> indiff = netspeed->devinfo->rx - netspeed->in_old[netspeed->index_old];</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"> <span class='keyword'>if</span> (netspeed->devinfo->tx < netspeed->out_old[netspeed->index_old])</td></tr> +<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> outdiff = 0;</td></tr> +<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> outdiff = netspeed->devinfo->tx - netspeed->out_old[netspeed->index_old];</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"> inrate = (<span class='keyword'>double</span>)indiff / <span class='macro'>OLD_VALUES_DBL<span class='macro_popup'>5.0</span></span>;</td></tr> +<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> outrate = (<span class='keyword'>double</span>)outdiff / <span class='macro'>OLD_VALUES_DBL<span class='macro_popup'>5.0</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"> netspeed->in_graph[netspeed->index_graph] = inrate;</td></tr> +<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> netspeed->out_graph[netspeed->index_graph] = outrate;</td></tr> +<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> netspeed->max_graph = <span class='macro'>MAX (inrate, netspeed->max_graph)<span class='macro_popup'>(((inrate) > (netspeed->max_graph)) ? (inrate) : (netspeed<br>->max_graph))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> netspeed->max_graph = <span class='macro'>MAX (outrate, netspeed->max_graph)<span class='macro_popup'>(((outrate) > (netspeed->max_graph)) ? (outrate) : (netspeed<br>->max_graph))</span></span>;</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"> format_transfer_rate (netspeed->devinfo->rx_rate, inrate, netspeed->show_bits);</td></tr> +<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> format_transfer_rate (netspeed->devinfo->tx_rate, outrate, netspeed->show_bits);</td></tr> +<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> format_transfer_rate (netspeed->devinfo->sum_rate, inrate + outrate, netspeed->show_bits);</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"> netspeed->devinfo->rx_rate[0] = '\0';</td></tr> +<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> netspeed->devinfo->tx_rate[0] = '\0';</td></tr> +<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> netspeed->devinfo->sum_rate[0] = '\0';</td></tr> +<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> netspeed->in_graph[netspeed->index_graph] = 0;</td></tr> +<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> netspeed->out_graph[netspeed->index_graph] = 0;</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'>if</span> (netspeed->devinfo->type == DEV_WIRELESS) {</td></tr> +<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->up)</td></tr> +<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> update_quality_icon (netspeed);</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"> <span class='keyword'>if</span> (netspeed->signalbar) {</td></tr> +<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> <span class='keyword'>float</span> quality;</td></tr> +<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> <span class='keyword'>char</span> *text;</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"> quality = netspeed->devinfo->qual / 100.0f;</td></tr> +<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> <span class='keyword'>if</span> (quality > 1.0)</td></tr> +<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> quality = 1.0;</td></tr> +<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> text = g_strdup_printf (<span class='string_literal'>"%d %%"</span>, netspeed->devinfo->qual);</td></tr> +<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> gtk_progress_bar_set_fraction (<span class='macro'>GTK_PROGRESS_BAR (netspeed->signalbar)<span class='macro_popup'>((((GtkProgressBar*) (void *) ((netspeed->signalbar)))))</span></span>, quality);</td></tr> +<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> gtk_progress_bar_set_text (<span class='macro'>GTK_PROGRESS_BAR (netspeed->signalbar)<span class='macro_popup'>((((GtkProgressBar*) (void *) ((netspeed->signalbar)))))</span></span>, text);</td></tr> +<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> g_free (text);</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='directive'>#ifdef <span class='macro'>HAVE_NL<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='comment'>/* Refresh the value of Connected Time */</span></td></tr> +<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='keyword'>if</span> (netspeed->connected_time_text) {</td></tr> +<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>char</span> *text;</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"> text = format_time (netspeed->devinfo->connected_time);</td></tr> +<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->connected_time_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->connected_time_text)))<br>))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> netspeed->devinfo->connected_time > 0 ? text : <span class='macro'>_(<span class='string_literal'>"na"</span>)<span class='macro_popup'>dcgettext (((void*)0), "na", 5)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> g_free (text);</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'>#endif</span></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"> </td></tr> +<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> update_tooltip (netspeed);</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='comment'>/* Refresh the text of the labels */</span></td></tr> +<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='keyword'>if</span> (netspeed->show_sum) {</td></tr> +<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->sum_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->sum_label)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> netspeed->devinfo->sum_rate);</td></tr> +<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->in_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->in_label)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> netspeed->devinfo->rx_rate);</td></tr> +<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->out_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->out_label)))))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> netspeed->devinfo->tx_rate);</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"> </td></tr> +<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> <span class='comment'>/* Refresh the values of the Infodialog */</span></td></tr> +<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> <span class='keyword'>if</span> (netspeed->inbytes_text) {</td></tr> +<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> <span class='keyword'>if</span> (netspeed->show_bits)</td></tr> +<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> inbytes = g_format_size_full (netspeed->devinfo->rx*8,</td></tr> +<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> G_FORMAT_SIZE_IEC_UNITS | G_FORMAT_SIZE_BITS);</td></tr> +<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> inbytes = g_format_size_full (netspeed->devinfo->rx,</td></tr> +<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> G_FORMAT_SIZE_IEC_UNITS);</td></tr> +<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->inbytes_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->inbytes_text)))))</span></span>, inbytes);</td></tr> +<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> g_free (inbytes);</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"> <span class='keyword'>if</span> (netspeed->outbytes_text) {</td></tr> +<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> <span class='keyword'>if</span> (netspeed->show_bits)</td></tr> +<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> outbytes = g_format_size_full (netspeed->devinfo->tx*8,</td></tr> +<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> G_FORMAT_SIZE_IEC_UNITS | G_FORMAT_SIZE_BITS);</td></tr> +<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> outbytes = g_format_size_full (netspeed->devinfo->tx,</td></tr> +<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> G_FORMAT_SIZE_IEC_UNITS);</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"> gtk_label_set_text (<span class='macro'>GTK_LABEL (netspeed->outbytes_text)<span class='macro_popup'>((((GtkLabel*) (void *) ((netspeed->outbytes_text)))))</span></span>, outbytes);</td></tr> +<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> g_free (outbytes);</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='comment'>/* Redraw the graph of the Infodialog */</span></td></tr> +<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> <span class='keyword'>if</span> (netspeed->drawingarea)</td></tr> +<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> gtk_widget_queue_draw (<span class='macro'>GTK_WIDGET (netspeed->drawingarea)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed->drawingarea)))))</span></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='comment'>/* Save old values... */</span></td></tr> +<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> netspeed->in_old [netspeed->index_old] = netspeed->devinfo->rx;</td></tr> +<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> netspeed->out_old [netspeed->index_old] = netspeed->devinfo->tx;</td></tr> +<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> netspeed->index_old = (netspeed->index_old + 1) % <span class='macro'>OLD_VALUES<span class='macro_popup'>5</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"> <span class='comment'>/* Move the graphindex. Check if we can scale down again */</span></td></tr> +<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> netspeed->index_graph = (netspeed->index_graph + 1) % <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>;</td></tr> +<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> <span class='keyword'>if</span> (netspeed->index_graph % 20 == 0) {</td></tr> +<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> <span class='keyword'>double</span> max = 0;</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'>for</span> (i = 0; i < <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; i++) {</td></tr> +<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> max = <span class='macro'>MAX (max, netspeed->in_graph[i])<span class='macro_popup'>(((max) > (netspeed->in_graph[i])) ? (max) : (netspeed-><br>in_graph[i]))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> max = <span class='macro'>MAX (max, netspeed->out_graph[i])<span class='macro_popup'>(((max) > (netspeed->out_graph[i])) ? (max) : (netspeed<br>->out_graph[i]))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> netspeed->max_graph = max;</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"> </td></tr> +<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> <span class='comment'>/* Always follow the default route */</span></td></tr> +<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> <span class='keyword'>if</span> (netspeed->auto_change_device) {</td></tr> +<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> gboolean change_device_now = !netspeed->devinfo->running;</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'>if</span> (!change_device_now) {</td></tr> +<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> <span class='keyword'>const</span> gchar *default_route;</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"> default_route = get_default_route ();</td></tr> +<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> change_device_now = (default_route != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &&</td></tr> +<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> strcmp (default_route, netspeed->devinfo->name));</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> (change_device_now) {</td></tr> +<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> search_for_up_if (netspeed);</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">}</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'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line">timeout_function (NetspeedApplet *netspeed)</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='keyword'>if</span> (!netspeed)</td></tr> +<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</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="978"><td class="num" id="LN978">978</td><td class="line"> <span class='keyword'>if</span> (!netspeed->timeout_id)</td></tr> +<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</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="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"> update_applet (netspeed);</td></tr> +<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</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="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"> </td></tr> +<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"><span class='comment'>/* Display a section of netspeed help</span></td></tr> +<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line">netspeed_applet_display_help (GtkWidget *dialog,</td></tr> +<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>const</span> gchar *section)</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"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> gboolean ret;</td></tr> +<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> <span class='keyword'>char</span> *uri;</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"> <span class='keyword'>if</span> (section)</td></tr> +<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> uri = g_strdup_printf (<span class='string_literal'>"help:mate-netspeed-applet/%s"</span>, section);</td></tr> +<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> uri = <span class='macro'>g_strdup (<span class='string_literal'>"help:mate-netspeed-applet"</span>)<span class='macro_popup'>g_strdup_inline ("help:mate-netspeed-applet")</span></span>;</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"> ret = gtk_show_uri_on_window (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> uri,</td></tr> +<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> gtk_get_current_event_time (),</td></tr> +<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> &error);</td></tr> +<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> g_free (uri);</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"> <span class='keyword'>if</span> (ret == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> GtkWidget *error_dialog = gtk_message_dialog_new (<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"> GTK_DIALOG_MODAL,</td></tr> +<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> GTK_MESSAGE_ERROR,</td></tr> +<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> GTK_BUTTONS_OK,</td></tr> +<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"There was an error displaying help:\n%s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "There was an error displaying help:\n%s"<br>, 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> error->message);</td></tr> +<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> <span class='macro'>g_signal_connect (error_dialog, <span class='string_literal'>"response"</span>,<span class='macro_popup'>g_signal_connect_data ((error_dialog), ("response"), (((GCallback<br>) (gtk_widget_destroy))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> <span class='macro'>G_CALLBACK (gtk_widget_destroy), NULL)<span class='macro_popup'>g_signal_connect_data ((error_dialog), ("response"), (((GCallback<br>) (gtk_widget_destroy))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 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"> gtk_window_set_resizable (<span class='macro'>GTK_WINDOW (error_dialog)<span class='macro_popup'>((((GtkWindow*) (void *) ((error_dialog)))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> gtk_window_set_screen (<span class='macro'>GTK_WINDOW (error_dialog)<span class='macro_popup'>((((GtkWindow*) (void *) ((error_dialog)))))</span></span>, gtk_widget_get_screen (dialog));</td></tr> +<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> gtk_widget_show (error_dialog);</td></tr> +<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> g_error_free (error);</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">}</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='comment'>/* Opens gnome help application</span></td></tr> +<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line">help_cb (GtkAction *action,</td></tr> +<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> NetspeedApplet *netspeed)</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"> netspeed_applet_display_help (<span class='macro'>GTK_WIDGET (netspeed)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> </td></tr> +<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"><span class='comment'>/* Just the about window... If it's already open, just fokus it</span></td></tr> +<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line">about_cb (GtkAction *action,</td></tr> +<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> gpointer data)</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'>const</span> <span class='keyword'>char</span> *authors[] =</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='string_literal'>"Jörgen Scheibengruber <[email protected]>"</span>,</td></tr> +<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> <span class='string_literal'>"Dennis Cranston <[email protected]>"</span>,</td></tr> +<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='string_literal'>"Pedro Villavicencio Garrido <[email protected]>"</span>,</td></tr> +<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> <span class='string_literal'>"Benoît Dejean <[email protected]>"</span>,</td></tr> +<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='string_literal'>"Stefano Karapetsas <[email protected]>"</span>,</td></tr> +<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> <span class='string_literal'>"Perberos <[email protected]>"</span>,</td></tr> +<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></td></tr> +<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> };</td></tr> +<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> gtk_show_about_dialog (<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"> <span class='string_literal'>"title"</span>, <span class='macro'>_(<span class='string_literal'>"About MATE Netspeed"</span>)<span class='macro_popup'>dcgettext (((void*)0), "About MATE Netspeed", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='string_literal'>"version"</span>, <span class='macro'>VERSION<span class='macro_popup'>"1.27.1"</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='string_literal'>"copyright"</span>, <span class='macro'>_(<span class='string_literal'>"Copyright \xc2\xa9 2002-2003 Jörgen Scheibengruber\n"<span class='macro_popup'>dcgettext (((void*)0), "Copyright \xc2\xa9 2002-2003 Jörgen Scheibengruber\n"<br> "Copyright \xc2\xa9 2011-2014 Stefano Karapetsas\n" "Copyright \xc2\xa9 2015-2021 MATE developers"<br>, 5)</span></span></span></td></tr> +<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> <span class='string_literal'><span class='macro'>"Copyright \xc2\xa9 2011-2014 Stefano Karapetsas\n"<span class='macro_popup'>dcgettext (((void*)0), "Copyright \xc2\xa9 2002-2003 Jörgen Scheibengruber\n"<br> "Copyright \xc2\xa9 2011-2014 Stefano Karapetsas\n" "Copyright \xc2\xa9 2015-2021 MATE developers"<br>, 5)</span></span></span></td></tr> +<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> <span class='string_literal'><span class='macro'>"Copyright \xc2\xa9 2015-2021 MATE developers"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Copyright \xc2\xa9 2002-2003 Jörgen Scheibengruber\n"<br> "Copyright \xc2\xa9 2011-2014 Stefano Karapetsas\n" "Copyright \xc2\xa9 2015-2021 MATE developers"<br>, 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> <span class='string_literal'>"comments"</span>, <span class='macro'>_(<span class='string_literal'>"A little applet that displays some information on the traffic on the specified network device"</span>)<span class='macro_popup'>dcgettext (((void*)0), "A little applet that displays some information on the traffic on the specified network device"<br>, 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='string_literal'>"authors"</span>, authors,</td></tr> +<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> <span class='string_literal'>"documenters"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='string_literal'>"translator-credits"</span>, <span class='macro'>_(<span class='string_literal'>"translator-credits"</span>)<span class='macro_popup'>dcgettext (((void*)0), "translator-credits", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> <span class='string_literal'>"website"</span>, <span class='macro'>PACKAGE_URL<span class='macro_popup'>"https://mate-desktop.org"</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> <span class='string_literal'>"logo-icon-name"</span>, LOGO_ICON,</td></tr> +<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</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"> </td></tr> +<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line">netspeed_applet_destroy_preferences (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> gpointer user_data)</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"> NetspeedApplet *netspeed;</td></tr> +<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> (<span class='keyword'>void</span>) widget;</td></tr> +<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> netspeed = NETSPEED_APPLET (user_data);</td></tr> +<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> netspeed->preferences = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"><span class='comment'>/* Creates the settings dialog</span></td></tr> +<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='comment'>* After its been closed, take the new values and store</span></td></tr> +<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='comment'>* them in the gsettings database</span></td></tr> +<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> <span class='comment'>*/</span></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">settings_cb (GtkAction *action,</td></tr> +<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> NetspeedApplet *netspeed)</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='macro'>g_assert (netspeed)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_16<br>; if (netspeed) _g_boolean_var_16 = 1; else _g_boolean_var_16<br> = 0; _g_boolean_var_16; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "netspeed.c", 1083, ((const char*) (__func__)<br>), "netspeed"); } while (0)</span></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='keyword'>if</span> (netspeed->preferences)</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"> gtk_window_present (<span class='macro'>GTK_WINDOW (netspeed->preferences)<span class='macro_popup'>((((GtkWindow*) (void *) ((netspeed->preferences)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> <span class='keyword'>return</span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> netspeed->preferences = netspeed_preferences_new (netspeed);</td></tr> +<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='macro'>g_signal_connect (netspeed->preferences, <span class='string_literal'>"destroy"</span>,<span class='macro_popup'>g_signal_connect_data ((netspeed->preferences), ("destroy"<br>), (((GCallback) (netspeed_applet_destroy_preferences))), (netspeed<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> <span class='macro'>G_CALLBACK (netspeed_applet_destroy_preferences), netspeed)<span class='macro_popup'>g_signal_connect_data ((netspeed->preferences), ("destroy"<br>), (((GCallback) (netspeed_applet_destroy_preferences))), (netspeed<br>), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> gtk_widget_show_all (netspeed->preferences);</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"> </td></tr> +<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line">da_draw (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> cairo_t *cr,</td></tr> +<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> NetspeedApplet *netspeed)</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"> redraw_graph (netspeed, cr);</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'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line">incolor_changed_cb (GtkColorChooser *button,</td></tr> +<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> NetspeedApplet *netspeed)</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"> GdkRGBA color;</td></tr> +<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> gchar *string;</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"> gtk_color_chooser_get_rgba (<span class='macro'>GTK_COLOR_CHOOSER (button)<span class='macro_popup'>((((GtkColorChooser*) (void *) ((button)))))</span></span>, &color);</td></tr> +<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> netspeed->in_color = color;</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"> string = gdk_rgba_to_string (&color);</td></tr> +<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> g_settings_set_string (netspeed->settings, <span class='string_literal'>"in-color"</span>, string);</td></tr> +<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> g_free (string);</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">outcolor_changed_cb (GtkColorChooser *button,</td></tr> +<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> NetspeedApplet *netspeed)</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"> GdkRGBA color;</td></tr> +<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> gchar *string;</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"> gtk_color_chooser_get_rgba (<span class='macro'>GTK_COLOR_CHOOSER (button)<span class='macro_popup'>((((GtkColorChooser*) (void *) ((button)))))</span></span>, &color);</td></tr> +<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> netspeed->out_color = color;</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"> string = gdk_rgba_to_string (&color);</td></tr> +<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> g_settings_set_string (netspeed->settings, <span class='string_literal'>"out-color"</span>, string);</td></tr> +<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> g_free (string);</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='comment'>/* Handle info dialog response event</span></td></tr> +<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line">info_response_cb (GtkDialog *dialog,</td></tr> +<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> gint id,</td></tr> +<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> NetspeedApplet *netspeed)</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"> </td></tr> +<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='keyword'>if</span> (id == GTK_RESPONSE_HELP) {</td></tr> +<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> netspeed_applet_display_help (<span class='macro'>GTK_WIDGET (dialog)<span class='macro_popup'>((((GtkWidget*) (void *) ((dialog)))))</span></span>, <span class='string_literal'>"netspeed_applet-details"</span>);</td></tr> +<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='keyword'>return</span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> gtk_widget_destroy (netspeed->details);</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"> netspeed->details = <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"> netspeed->drawingarea = <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"> netspeed->ip_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> netspeed->netmask_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> netspeed->ptpip_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> netspeed->ipv6_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> netspeed->hwaddr_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> netspeed->inbytes_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> netspeed->outbytes_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> netspeed->essid_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> netspeed->signalbar = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_NL<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> netspeed->station_text = <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"> netspeed->channel_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> netspeed->connected_time_text = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"><span class='directive'>#endif /* HAVE_NL */</span></td></tr> +<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> netspeed->ipv6_box = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> netspeed->netlink_box = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> netspeed->wireless_box = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line">}</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"><span class='comment'>/* Creates the details dialog</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='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line">showinfo_cb (GtkAction *action,</td></tr> +<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> NetspeedApplet *netspeed)</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"> <span id="start56">GtkBuilder</span> *builder;</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 id="start50"><span id="start51"><span id="end51"><span id="start52"><span id="end52"><span id="start53"><span id="end53"><span class="mrange"><span id="start54"><span id="end54"><span id="start55"><span id="end55"><span id="end56"><span class='macro'>g_assert</span></span></span></span></span></span></span></span></span></span></span></span></span> (netspeed)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_17<br>; if (netspeed) _g_boolean_var_17 = 1; else _g_boolean_var_17<br> = 0; _g_boolean_var_17; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "netspeed.c", 1181, ((const char*) (__func__)<br>), "netspeed"); } while (0)</span></span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:5ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'netspeed' is non-null</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">→</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:5ex"><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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">→</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:5ex"><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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">→</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:5ex"><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)">←</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">→</a></div></td></tr></table></div></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 id="start49"><span id="end50"><span class='keyword'>if</span></span></span> (<span id="start48"><span class="mrange"><span id="end49">netspeed</span></span>->details</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming field 'details' is null</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> gtk_window_present (<span class='macro'>GTK_WINDOW (netspeed->details)<span class='macro_popup'>((((GtkWindow*) (void *) ((netspeed->details)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> <span class='keyword'>return</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"> </td></tr> +<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span id="start45"><span id="end46"><span id="start47"><span id="end48">builder</span></span></span></span> = gtk_builder_new_from_resource (<span id="start46"><span id="end47"><span class='macro'>NETSPEED_RESOURCE_PATH<span class='macro_popup'>"/org/mate/mate-applets/netspeed/"</span></span></span></span> <span class='string_literal'>"netspeed-details.ui"</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"> netspeed->details = <span class='macro'>GET_WIDGET (<span class='string_literal'>"dialog"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"dialog"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> netspeed->drawingarea = <span class='macro'>GET_DRAWING_AREA (<span class='string_literal'>"drawingarea"</span>)<span class='macro_popup'>(((((GtkDrawingArea*) (void *) ((gtk_builder_get_object (builder<br>, ("drawingarea"))))))))</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"> netspeed->ip_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"ip_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"ip_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> netspeed->netmask_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"netmask_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"netmask_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> netspeed->ptpip_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"ptpip_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"ptpip_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> netspeed->ipv6_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"ipv6_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"ipv6_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> netspeed->hwaddr_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"hwaddr_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"hwaddr_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> netspeed->inbytes_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"inbytes_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"inbytes_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> netspeed->outbytes_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"outbytes_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"outbytes_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> netspeed->essid_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"essid_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"essid_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> netspeed->signalbar = <span class='macro'>GET_WIDGET (<span class='string_literal'>"signalbar"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"signalbar"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_NL<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> netspeed->station_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"station_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"station_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> netspeed->channel_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"channel_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"channel_text"))))))))</span></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"> netspeed->connected_time_text = <span class='macro'>GET_WIDGET (<span class='string_literal'>"connected_time_text"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"connected_time_text"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"><span class='directive'>#endif /* HAVE_NL */</span></td></tr> +<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> netspeed->ipv6_box = <span class='macro'>GET_WIDGET (<span class='string_literal'>"ipv6_box"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"ipv6_box"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> netspeed->netlink_box = <span class='macro'>GET_WIDGET (<span class='string_literal'>"netlink_box"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"netlink_box"))))))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> netspeed->wireless_box = <span class='macro'>GET_WIDGET (<span class='string_literal'>"wireless_box"</span>)<span class='macro_popup'>(((((GtkWidget*) (void *) ((gtk_builder_get_object (builder, (<br>"wireless_box"))))))))</span></span>;</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"> gtk_color_chooser_set_rgba (<span class='macro'>GET_COLOR_CHOOSER (<span class='string_literal'>"incolor_sel"</span>)<span class='macro_popup'>(((((GtkColorChooser*) (void *) ((gtk_builder_get_object (builder<br>, ("incolor_sel"))))))))</span></span>, &netspeed->in_color);</td></tr> +<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> gtk_color_chooser_set_rgba (<span class='macro'>GET_COLOR_CHOOSER (<span class='string_literal'>"outcolor_sel"</span>)<span class='macro_popup'>(((((GtkColorChooser*) (void *) ((gtk_builder_get_object (builder<br>, ("outcolor_sel"))))))))</span></span>, &netspeed->out_color);</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="mrange"><span id="end45">fill_details_dialog</span> (netspeed)</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgEvent" style="margin-left:5ex"><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)">←</a></div></td><td>Calling 'fill_details_dialog'</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">→</a></div></td></tr></table></div></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"> gtk_builder_add_callback_symbols (builder,</td></tr> +<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='string_literal'>"on_drawingarea_draw"</span>, <span class='macro'>G_CALLBACK (da_draw)<span class='macro_popup'>((GCallback) (da_draw))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> <span class='string_literal'>"on_incolor_sel_color_set"</span>, <span class='macro'>G_CALLBACK (incolor_changed_cb)<span class='macro_popup'>((GCallback) (incolor_changed_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> <span class='string_literal'>"on_outcolor_sel_color_set"</span>, <span class='macro'>G_CALLBACK (outcolor_changed_cb)<span class='macro_popup'>((GCallback) (outcolor_changed_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='string_literal'>"on_dialog_response"</span>, <span class='macro'>G_CALLBACK (info_response_cb)<span class='macro_popup'>((GCallback) (info_response_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> gtk_builder_connect_signals (builder, netspeed);</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"> g_object_unref (builder);</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"> gtk_window_present (<span class='macro'>GTK_WINDOW (netspeed->details)<span class='macro_popup'>((((GtkWindow*) (void *) ((netspeed->details)))))</span></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'>static</span> <span class='keyword'>const</span> GtkActionEntry netspeed_applet_menu_actions [] = {</td></tr> +<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> { <span class='string_literal'>"NetspeedAppletDetails"</span>, <span class='string_literal'>"dialog-information"</span>, <span class='macro'>N_(<span class='string_literal'>"Device _Details"</span>)<span class='macro_popup'>("Device _Details")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</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'>G_CALLBACK (showinfo_cb)<span class='macro_popup'>((GCallback) (showinfo_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> { <span class='string_literal'>"NetspeedAppletProperties"</span>, <span class='string_literal'>"document-properties"</span>, <span class='macro'>N_(<span class='string_literal'>"Preferences..."</span>)<span class='macro_popup'>("Preferences...")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</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'>G_CALLBACK (settings_cb)<span class='macro_popup'>((GCallback) (settings_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> { <span class='string_literal'>"NetspeedAppletHelp"</span>, <span class='string_literal'>"help-browser"</span>, <span class='macro'>N_(<span class='string_literal'>"Help"</span>)<span class='macro_popup'>("Help")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</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'>G_CALLBACK (help_cb)<span class='macro_popup'>((GCallback) (help_cb))</span></span> },</td></tr> +<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> { <span class='string_literal'>"NetspeedAppletAbout"</span>, <span class='string_literal'>"help-about"</span>, <span class='macro'>N_(<span class='string_literal'>"About..."</span>)<span class='macro_popup'>("About...")</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</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'>G_CALLBACK (about_cb)<span class='macro_popup'>((GCallback) (about_cb))</span></span> }</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"> </td></tr> +<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"><span class='comment'>/* Block the size_request signal emit by the label if the</span></td></tr> +<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> <span class='comment'>* text changes. Only if the label wants to grow, we give</span></td></tr> +<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='comment'>* permission. This will eventually result in the maximal</span></td></tr> +<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> <span class='comment'>* size of the applet and prevents the icons and labels from</span></td></tr> +<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> <span class='comment'>* "jumping around" in the mate_panel which looks uggly</span></td></tr> +<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line">label_size_allocate_cb (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> GtkAllocation *allocation,</td></tr> +<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> NetspeedApplet *netspeed)</td></tr> +<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='keyword'>if</span> (netspeed->labels_dont_shrink) {</td></tr> +<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> <span class='keyword'>if</span> (allocation->width <= netspeed->width)</td></tr> +<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> allocation->width = netspeed->width;</td></tr> +<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> netspeed->width = allocation->width;</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">}</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"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line">netspeed_applet_button_press_event (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"> GdkEventButton *event)</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"> <span class='keyword'>if</span> (event->button == 1) {</td></tr> +<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> NetspeedApplet *netspeed = NETSPEED_APPLET (widget);</td></tr> +<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</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="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> (netspeed->connect_dialog) {</td></tr> +<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> gtk_window_present (<span class='macro'>GTK_WINDOW (netspeed->connect_dialog)<span class='macro_popup'>((((GtkWindow*) (void *) ((netspeed->connect_dialog)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</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="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"> <span class='keyword'>if</span> (netspeed->up_cmd && netspeed->down_cmd) {</td></tr> +<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> <span class='keyword'>char</span> *question;</td></tr> +<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> <span class='keyword'>int</span> response;</td></tr> +<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->up)</td></tr> +<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> question = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Do you want to disconnect %s now?"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Do you want to disconnect %s now?", 5<br>)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> netspeed->devinfo->name);</td></tr> +<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> question = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Do you want to connect %s now?"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Do you want to connect %s now?", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> netspeed->devinfo->name);</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"> netspeed->connect_dialog =</td></tr> +<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> gtk_message_dialog_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"> GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,</td></tr> +<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,</td></tr> +<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> <span class='string_literal'>"%s"</span>, question);</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"> response = gtk_dialog_run (<span class='macro'>GTK_DIALOG (netspeed->connect_dialog)<span class='macro_popup'>((((GtkDialog*) (void *) ((netspeed->connect_dialog)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> gtk_widget_destroy (netspeed->connect_dialog);</td></tr> +<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> netspeed->connect_dialog = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> g_free (question);</td></tr> +<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='keyword'>if</span> (response == GTK_RESPONSE_YES) {</td></tr> +<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> GtkWidget *dialog;</td></tr> +<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> <span class='keyword'>char</span> *command;</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"> command = g_strdup_printf (<span class='string_literal'>"%s %s"</span>,</td></tr> +<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> netspeed->devinfo->up ? netspeed->down_cmd : netspeed->up_cmd,</td></tr> +<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> netspeed->devinfo->name);</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> (!g_spawn_command_line_async (command, &error)) {</td></tr> +<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> dialog = gtk_message_dialog_new_with_markup (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,</td></tr> +<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,</td></tr> +<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"<b>Running command %s failed</b>\n%s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "<b>Running command %s failed</b>\n%s"<br>, 5)</span></span>, command, error->message);</td></tr> +<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> gtk_dialog_run (<span class='macro'>GTK_DIALOG (dialog)<span class='macro_popup'>((((GtkDialog*) (void *) ((dialog)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> gtk_widget_destroy (dialog);</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"> g_error_free (error);</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"> </td></tr> +<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> g_free (command);</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"> }</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"> </td></tr> +<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (netspeed_applet_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((netspeed_applet_parent_class)<br>))))</span></span>->button_press_event (widget, event);</td></tr> +<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line">}</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"><span class='comment'>/* Frees the applet and all the data it contains</span></td></tr> +<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> <span class='comment'>* Removes the timeout_cb</span></td></tr> +<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line">netspeed_applet_finalize (GObject *object)</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"> NetspeedApplet *netspeed = NETSPEED_APPLET (object);</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"> <span class='keyword'>if</span> (netspeed->icon_theme != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (netspeed->icon_theme,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((netspeed->icon_theme<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (icon_theme_changed_cb), (netspeed))</span></span></td></tr> +<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> <span class='macro'>icon_theme_changed_cb,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((netspeed->icon_theme<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (icon_theme_changed_cb), (netspeed))</span></span></td></tr> +<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> <span class='macro'>netspeed)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((netspeed->icon_theme<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (icon_theme_changed_cb), (netspeed))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> netspeed->icon_theme = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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"> <span class='keyword'>if</span> (netspeed->timeout_id > 0) {</td></tr> +<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> g_source_remove (netspeed->timeout_id);</td></tr> +<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> netspeed->timeout_id = 0;</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"> </td></tr> +<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='macro'>g_clear_object (&netspeed->settings)<span class='macro_popup'>do { _Static_assert (sizeof *((&netspeed->settings)) ==<br> sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (((&netspeed->settings))) _pp = ((&netspeed->settings<br>)); __typeof__ (*((&netspeed->settings))) _ptr = *_pp;<br> *_pp = ((void*)0); if (_ptr) (g_object_unref) (_ptr); } while<br> (0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='macro'>g_clear_pointer (&netspeed->details, gtk_widget_destroy)<span class='macro_popup'>do { _Static_assert (sizeof *(&netspeed->details) == sizeof<br> (gpointer), "Expression evaluates to false"); __typeof__ ((&<br>netspeed->details)) _pp = (&netspeed->details); __typeof__<br> (*(&netspeed->details)) _ptr = *_pp; *_pp = ((void*)0<br>); if (_ptr) (gtk_widget_destroy) (_ptr); } while (0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> <span class='macro'>g_clear_pointer (&netspeed->preferences, gtk_widget_destroy)<span class='macro_popup'>do { _Static_assert (sizeof *(&netspeed->preferences) ==<br> sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> ((&netspeed->preferences)) _pp = (&netspeed->preferences<br>); __typeof__ (*(&netspeed->preferences)) _ptr = *_pp;<br> *_pp = ((void*)0); if (_ptr) (gtk_widget_destroy) (_ptr); } while<br> (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"> g_free (netspeed->up_cmd);</td></tr> +<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> g_free (netspeed->down_cmd);</td></tr> +<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='comment'>/* Should never be NULL */</span></td></tr> +<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> free_device_info (netspeed->devinfo);</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"> </td></tr> +<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line">update_tooltip (NetspeedApplet *netspeed)</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"> GString* tooltip;</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"> <span class='keyword'>if</span> (!netspeed->show_tooltip)</td></tr> +<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> <span class='keyword'>return</span>;</td></tr> +<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> tooltip = g_string_new (<span class='string_literal'>""</span>);</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> (!netspeed->devinfo->running)</td></tr> +<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> g_string_printf (tooltip, <span class='macro'>_(<span class='string_literal'>"%s is down"</span>)<span class='macro_popup'>dcgettext (((void*)0), "%s is down", 5)</span></span>, netspeed->devinfo->name);</td></tr> +<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> GSList *iterator;</td></tr> +<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> GString *string = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> <span class='keyword'>char</span> ipv4_text [<span class='macro'>INET_ADDRSTRLEN<span class='macro_popup'>16</span></span>];</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"> g_string_printf (tooltip, <span class='string_literal'>"%s: "</span>, netspeed->devinfo->name);</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"> <span class='keyword'>if</span> (netspeed->show_all_addresses || !netspeed->devinfo->ip) {</td></tr> +<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> GSList *ip6_address_list = get_ip6_address_list (netspeed->devinfo->name);</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='comment'>/* check if we got IPv6 addresses */</span></td></tr> +<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='keyword'>if</span> (ip6_address_list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> <span class='keyword'>for</span> (iterator = ip6_address_list; iterator; iterator = iterator->next) {</td></tr> +<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> <span class='keyword'>if</span> (string == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr> +<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> string = g_string_new ((<span class='keyword'>char</span>*) iterator->data);</td></tr> +<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> g_string_append_printf (string,</td></tr> +<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\n%s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "\n%s", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> (<span class='keyword'>char</span>*) iterator->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"> }</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"> g_slist_free_full (ip6_address_list, g_free);</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"> </td></tr> +<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='keyword'>if</span> (!netspeed->devinfo->ip && !string) {</td></tr> +<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> <span class='macro'>g_string_append (tooltip, <span class='string_literal'>"has no ip"</span>)<span class='macro_popup'>(__builtin_constant_p ("has no ip") ? __extension__ ({ const char<br> * const __val = ("has no ip"); g_string_append_len_inline (tooltip<br>, __val, (__builtin_expect (__extension__ ({ int _g_boolean_var_18<br>; if (__val != ((void*)0)) _g_boolean_var_18 = 1; else _g_boolean_var_18<br> = 0; _g_boolean_var_18; }), 1)) ? (gssize) strlen (((__val) +<br> !(__val))) : (gssize) -1); }) : g_string_append_len_inline (<br>tooltip, "has no ip", (gssize) -1))</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->ip) {</td></tr> +<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> format_ipv4 (netspeed->devinfo->ip, ipv4_text);</td></tr> +<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='macro'>g_string_append (tooltip, ipv4_text)<span class='macro_popup'>(__builtin_constant_p (ipv4_text) ? __extension__ ({ const char<br> * const __val = (ipv4_text); g_string_append_len_inline (tooltip<br>, __val, (__builtin_expect (__extension__ ({ int _g_boolean_var_19<br>; if (__val != ((void*)0)) _g_boolean_var_19 = 1; else _g_boolean_var_19<br> = 0; _g_boolean_var_19; }), 1)) ? (gssize) strlen (((__val) +<br> !(__val))) : (gssize) -1); }) : g_string_append_len_inline (<br>tooltip, ipv4_text, (gssize) -1))</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> <span class='keyword'>if</span> (string != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> g_string_append_printf (tooltip,</td></tr> +<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\n%s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "\n%s", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> string->str);</td></tr> +<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='macro'>g_string_free (string, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(string), ((!(0)))) : g_string_free_and_steal (string)) : (g_string_free<br>) ((string), ((!(0)))))</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"> </td></tr> +<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> <span class='keyword'>if</span> (netspeed->show_sum) {</td></tr> +<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> g_string_append_printf (tooltip,</td></tr> +<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\nin: %s out: %s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "\nin: %s out: %s", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> netspeed->devinfo->rx_rate,</td></tr> +<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> netspeed->devinfo->tx_rate);</td></tr> +<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> } <span class='keyword'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> g_string_append_printf (tooltip,</td></tr> +<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\nsum: %s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "\nsum: %s", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> netspeed->devinfo->sum_rate);</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"> </td></tr> +<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_NL<span class='macro_popup'>1</span></span></span></td></tr> +<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->type == DEV_WIRELESS)</td></tr> +<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> g_string_append_printf (tooltip,</td></tr> +<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\nESSID: %s\nRSSI: %d dBm\nRX Bitrate: %s\nTX Bitrate: %s"</span>)<span class='macro_popup'>dcgettext (((void*)0), "\nESSID: %s\nRSSI: %d dBm\nRX Bitrate: %s\nTX Bitrate: %s"<br>, 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> netspeed->devinfo->essid ? netspeed->devinfo->essid : <span class='macro'>_(<span class='string_literal'>"unknown"</span>)<span class='macro_popup'>dcgettext (((void*)0), "unknown", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> netspeed->devinfo->rssi,</td></tr> +<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> netspeed->devinfo->rx_bitrate,</td></tr> +<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> netspeed->devinfo->tx_bitrate);</td></tr> +<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"><span class='directive'>#endif /* HAVE_NL */</span></td></tr> +<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"><span class='directive'>#ifdef HAVE_IW</span></td></tr> +<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> <span class='keyword'>if</span> (netspeed->devinfo->type == DEV_WIRELESS)</td></tr> +<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> g_string_append_printf (tooltip,</td></tr> +<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"\nESSID: %s\nStrength: %d %%"</span>)<span class='macro_popup'>dcgettext (((void*)0), "\nESSID: %s\nStrength: %d %%", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> netspeed->devinfo->essid ? netspeed->devinfo->essid : <span class='macro'>_(<span class='string_literal'>"unknown"</span>)<span class='macro_popup'>dcgettext (((void*)0), "unknown", 5)</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> netspeed->devinfo->qual);</td></tr> +<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"><span class='directive'>#endif /* HAVE_IW */</span></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> +<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> gtk_widget_set_tooltip_text (<span class='macro'>GTK_WIDGET (netspeed)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed)))))</span></span>, tooltip->str);</td></tr> +<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> gtk_widget_trigger_tooltip_query (<span class='macro'>GTK_WIDGET (netspeed)<span class='macro_popup'>((((GtkWidget*) (void *) ((netspeed)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> <span class='macro'>g_string_free (tooltip, TRUE)<span class='macro_popup'>(__builtin_constant_p ((!(0))) ? (((!(0))) ? (g_string_free) (<br>(tooltip), ((!(0)))) : g_string_free_and_steal (tooltip)) : (<br>g_string_free) ((tooltip), ((!(0)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line">}</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'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line">netspeed_applet_enter_notify_event (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> GdkEventCrossing *event)</td></tr> +<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> NetspeedApplet *netspeed = NETSPEED_APPLET (widget);</td></tr> +<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> netspeed->show_tooltip = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> update_tooltip (netspeed);</td></tr> +<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</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="1450"><td class="num" id="LN1450">1450</td><td class="line">}</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"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line">netspeed_applet_leave_notify_event (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> GdkEventCrossing *event)</td></tr> +<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> NetspeedApplet *netspeed = NETSPEED_APPLET (widget);</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"> netspeed->show_tooltip = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</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'>TRUE<span class='macro_popup'>(!(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='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line">netspeed_applet_class_init (NetspeedAppletClass *klass)</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"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> GtkWidgetClass *widget_class = <span class='macro'>GTK_WIDGET_CLASS (klass)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((klass)))))</span></span>;</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"> object_class->finalize = netspeed_applet_finalize;</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"> widget_class->button_press_event = netspeed_applet_button_press_event;</td></tr> +<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> widget_class->leave_notify_event = netspeed_applet_leave_notify_event;</td></tr> +<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> widget_class->enter_notify_event = netspeed_applet_enter_notify_event;</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"> </td></tr> +<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line">netspeed_applet_init (NetspeedApplet *netspeed)</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"> </td></tr> +<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line">changeicon_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> NetspeedApplet *netspeed)</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"> netspeed->change_icon = g_settings_get_boolean (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> change_icons (netspeed);</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"> </td></tr> +<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line">showalladdresses_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> NetspeedApplet *netspeed)</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"> netspeed->show_all_addresses = g_settings_get_boolean (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line">}</td></tr> +<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line">showsum_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> NetspeedApplet *netspeed)</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"> netspeed->show_sum = g_settings_get_boolean (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> applet_change_size_or_orient (MATE_PANEL_APPLET (netspeed), -1, netspeed);</td></tr> +<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> change_icons (netspeed);</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"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line">showbits_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> NetspeedApplet *netspeed)</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"> netspeed->show_bits = g_settings_get_boolean (settings, key);</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"> </td></tr> +<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line">showicon_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> NetspeedApplet *netspeed)</td></tr> +<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> netspeed->show_icon = g_settings_get_boolean (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> change_icons (netspeed);</td></tr> +<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line">}</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"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line">showqualityicon_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> NetspeedApplet *netspeed)</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"> netspeed->show_quality_icon = g_settings_get_boolean (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> change_quality_icon (netspeed);</td></tr> +<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line">}</td></tr> +<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line">auto_change_device_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> NetspeedApplet *netspeed)</td></tr> +<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> netspeed->auto_change_device = g_settings_get_boolean (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> netspeed->device_has_changed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> update_applet (netspeed);</td></tr> +<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line">}</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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line">device_settings_changed (GSettings *settings,</td></tr> +<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> <span class='keyword'>const</span> gchar *key,</td></tr> +<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> NetspeedApplet *netspeed)</td></tr> +<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"> <span class='keyword'>char</span> *device;</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"> device = g_settings_get_string (settings, key);</td></tr> +<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line"> <span class='keyword'>if</span> (device && *device != '\0') {</td></tr> +<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line"> free_device_info (netspeed->devinfo);</td></tr> +<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> get_device_info (device, &netspeed->devinfo);</td></tr> +<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> netspeed->device_has_changed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</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"> g_free (device);</td></tr> +<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line">}</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='comment'>/* The "main" function of the applet</span></td></tr> +<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line">netspeed_applet_factory (MatePanelApplet *applet,</td></tr> +<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> <span class='keyword'>const</span> gchar *iid,</td></tr> +<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> gpointer data)</td></tr> +<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line">{</td></tr> +<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> NetspeedApplet *netspeed;</td></tr> +<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> <span class='keyword'>int</span> i;</td></tr> +<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> GtkWidget *spacer, *spacer_box;</td></tr> +<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> GtkActionGroup *action_group;</td></tr> +<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> AtkObject *atk_obj;</td></tr> +<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> <span class='keyword'>char</span> *tmp;</td></tr> +<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> <span class='keyword'>if</span> (strcmp (iid, <span class='string_literal'>"NetspeedApplet"</span>))</td></tr> +<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</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="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"> glibtop_init ();</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='directive'>#ifndef ENABLE_IN_PROCESS</span></td></tr> +<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"> g_set_application_name (<span class='macro'>_(<span class='string_literal'>"MATE Netspeed"</span>)<span class='macro_popup'>dcgettext (((void*)0), "MATE Netspeed", 5)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"><span class='directive'>#endif</span></td></tr> +<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> netspeed = NETSPEED_APPLET (applet);</td></tr> +<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> netspeed->icon_theme = gtk_icon_theme_get_default ();</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='keyword'>for</span> (i = 0; i < <span class='macro'>GRAPH_VALUES<span class='macro_popup'>180</span></span>; i++)</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"> netspeed->in_graph[i] = -1;</td></tr> +<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> netspeed->out_graph[i] = -1;</td></tr> +<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> }</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"> netspeed->settings = mate_panel_applet_settings_new (applet, <span class='string_literal'>"org.mate.panel.applet.netspeed"</span>);</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'>/* Get stored settings from gsettings</span></td></tr> +<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> <span class='comment'>*/</span></td></tr> +<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> netspeed->show_all_addresses = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"show-all-addresses"</span>);</td></tr> +<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> netspeed->show_sum = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"show-sum"</span>);</td></tr> +<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> netspeed->show_bits = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"show-bits"</span>);</td></tr> +<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> netspeed->show_icon = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"show-icon"</span>);</td></tr> +<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> netspeed->show_quality_icon = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"show-quality-icon"</span>);</td></tr> +<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> netspeed->change_icon = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"change-icon"</span>);</td></tr> +<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> netspeed->auto_change_device = g_settings_get_boolean (netspeed->settings, <span class='string_literal'>"auto-change-device"</span>);</td></tr> +<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> tmp = g_settings_get_string (netspeed->settings, <span class='string_literal'>"device"</span>);</td></tr> +<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> <span class='keyword'>if</span> (tmp && *tmp != '\0')</td></tr> +<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> get_device_info (tmp, &netspeed->devinfo);</td></tr> +<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> netspeed->devinfo = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> g_free (tmp);</td></tr> +<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> tmp = g_settings_get_string (netspeed->settings, <span class='string_literal'>"up-command"</span>);</td></tr> +<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> <span class='keyword'>if</span> (tmp && *tmp != '\0')</td></tr> +<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> netspeed->up_cmd = <span class='macro'>g_strdup (tmp)<span class='macro_popup'>g_strdup_inline (tmp)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> netspeed->up_cmd = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> g_free (tmp);</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"> tmp = g_settings_get_string (netspeed->settings, <span class='string_literal'>"down-command"</span>);</td></tr> +<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> <span class='keyword'>if</span> (tmp && *tmp != '\0')</td></tr> +<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> netspeed->down_cmd = <span class='macro'>g_strdup (tmp)<span class='macro_popup'>g_strdup_inline (tmp)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> netspeed->down_cmd = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> g_free (tmp);</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"> tmp = g_settings_get_string (netspeed->settings, <span class='string_literal'>"in-color"</span>);</td></tr> +<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> <span class='keyword'>if</span> (tmp && *tmp != '\0')</td></tr> +<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> gdk_rgba_parse (&netspeed->in_color, tmp);</td></tr> +<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> gdk_rgba_parse (&netspeed->in_color, <span class='string_literal'>"#df0028004700"</span>);</td></tr> +<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> g_free (tmp);</td></tr> +<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> tmp = g_settings_get_string (netspeed->settings, <span class='string_literal'>"out-color"</span>);</td></tr> +<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> <span class='keyword'>if</span> (tmp && *tmp != '\0')</td></tr> +<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> gdk_rgba_parse (&netspeed->out_color, tmp);</td></tr> +<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"> gdk_rgba_parse (&netspeed->out_color, <span class='string_literal'>"#37002800df00"</span>);</td></tr> +<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> g_free (tmp);</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"> <span class='keyword'>if</span> (!netspeed->devinfo) {</td></tr> +<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> GList *ptr, *devices = get_available_devices ();</td></tr> +<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> ptr = devices;</td></tr> +<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='keyword'>while</span> (ptr) {</td></tr> +<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>g_str_equal (ptr->data, <span class='string_literal'>"lo"</span>)<span class='macro_popup'>(strcmp ((const char *) (ptr->data), (const char *) ("lo")<br>) == 0)</span></span>) {</td></tr> +<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> get_device_info (ptr->data, &netspeed->devinfo);</td></tr> +<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> <span class='keyword'>break</span>;</td></tr> +<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> ptr = <span class='macro'>g_list_next (ptr)<span class='macro_popup'>((ptr) ? (((GList *)(ptr))->next) : ((void*)0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> }</td></tr> +<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> g_list_free_full (devices, g_free);</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"> <span class='keyword'>if</span> (!netspeed->devinfo)</td></tr> +<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> get_device_info (<span class='string_literal'>"lo"</span>, &netspeed->devinfo);</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"> netspeed->device_has_changed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> netspeed->in_label = gtk_label_new (<span class='string_literal'>""</span>);</td></tr> +<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> netspeed->out_label = gtk_label_new (<span class='string_literal'>""</span>);</td></tr> +<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> netspeed->sum_label = gtk_label_new (<span class='string_literal'>""</span>);</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"> netspeed->in_pix = gtk_image_new ();</td></tr> +<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> netspeed->out_pix = gtk_image_new ();</td></tr> +<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"> netspeed->dev_pix = gtk_image_new ();</td></tr> +<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> netspeed->qual_pix = gtk_image_new ();</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"> netspeed->pix_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);</td></tr> +<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> spacer = gtk_label_new (<span class='string_literal'>""</span>);</td></tr> +<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->pix_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->pix_box)))))</span></span>, spacer, <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="1667"><td class="num" id="LN1667">1667</td><td class="line"> spacer = gtk_label_new (<span class='string_literal'>""</span>);</td></tr> +<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (netspeed->pix_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->pix_box)))))</span></span>, spacer, <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="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"> spacer_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);</td></tr> +<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (netspeed->pix_box)<span class='macro_popup'>((((GtkBox*) (void *) ((netspeed->pix_box)))))</span></span>, spacer_box, <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="1672"><td class="num" id="LN1672">1672</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (spacer_box)<span class='macro_popup'>((((GtkBox*) (void *) ((spacer_box)))))</span></span>, netspeed->qual_pix, <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="1673"><td class="num" id="LN1673">1673</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (spacer_box)<span class='macro_popup'>((((GtkBox*) (void *) ((spacer_box)))))</span></span>, netspeed->dev_pix, <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="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"> init_quality_surfaces (netspeed);</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"> applet_change_size_or_orient (applet, -1, netspeed);</td></tr> +<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> gtk_widget_show_all (<span class='macro'>GTK_WIDGET (applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((applet)))))</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"> update_applet (netspeed);</td></tr> +<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> mate_panel_applet_set_flags (applet, MATE_PANEL_APPLET_EXPAND_MINOR);</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"> netspeed->timeout_id = g_timeout_add (<span class='macro'>REFRESH_TIME<span class='macro_popup'>1000</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> (GSourceFunc)timeout_function,</td></tr> +<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> netspeed);</td></tr> +<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> g_signal_connect_object (applet, <span class='string_literal'>"change-size"</span>,</td></tr> +<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"> <span class='macro'>G_CALLBACK (applet_change_size_or_orient)<span class='macro_popup'>((GCallback) (applet_change_size_or_orient))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> netspeed, 0);</td></tr> +<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line"> g_signal_connect_object (netspeed->icon_theme, <span class='string_literal'>"changed"</span>,</td></tr> +<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> <span class='macro'>G_CALLBACK (icon_theme_changed_cb)<span class='macro_popup'>((GCallback) (icon_theme_changed_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> netspeed, 0);</td></tr> +<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> g_signal_connect_object (applet, <span class='string_literal'>"change-orient"</span>,</td></tr> +<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> <span class='macro'>G_CALLBACK (applet_change_size_or_orient)<span class='macro_popup'>((GCallback) (applet_change_size_or_orient))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> netspeed, 0);</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"> g_signal_connect_object (netspeed->in_label, <span class='string_literal'>"size-allocate"</span>,</td></tr> +<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> <span class='macro'>G_CALLBACK (label_size_allocate_cb)<span class='macro_popup'>((GCallback) (label_size_allocate_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> netspeed, 0);</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"> g_signal_connect_object (netspeed->out_label, <span class='string_literal'>"size-allocate"</span>,</td></tr> +<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> <span class='macro'>G_CALLBACK (label_size_allocate_cb)<span class='macro_popup'>((GCallback) (label_size_allocate_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> netspeed, 0);</td></tr> +<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> g_signal_connect_object (netspeed->sum_label, <span class='string_literal'>"size-allocate"</span>,</td></tr> +<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> <span class='macro'>G_CALLBACK (label_size_allocate_cb)<span class='macro_popup'>((GCallback) (label_size_allocate_cb))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> netspeed, 0);</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"> g_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::auto-change-device"</span>,</td></tr> +<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> <span class='macro'>G_CALLBACK (auto_change_device_settings_changed)<span class='macro_popup'>((GCallback) (auto_change_device_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> netspeed, 0);</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_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::device"</span>,</td></tr> +<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> <span class='macro'>G_CALLBACK (device_settings_changed)<span class='macro_popup'>((GCallback) (device_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> netspeed, 0);</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"> g_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::show-all-addresses"</span>,</td></tr> +<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> <span class='macro'>G_CALLBACK (showalladdresses_settings_changed)<span class='macro_popup'>((GCallback) (showalladdresses_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> netspeed, 0);</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"> g_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::show-sum"</span>,</td></tr> +<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='macro'>G_CALLBACK (showsum_settings_changed)<span class='macro_popup'>((GCallback) (showsum_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> netspeed, 0);</td></tr> +<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> g_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::show-bits"</span>,</td></tr> +<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> <span class='macro'>G_CALLBACK (showbits_settings_changed)<span class='macro_popup'>((GCallback) (showbits_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> netspeed, 0);</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_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::change-icon"</span>,</td></tr> +<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> <span class='macro'>G_CALLBACK (changeicon_settings_changed)<span class='macro_popup'>((GCallback) (changeicon_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> netspeed, 0);</td></tr> +<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> g_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::show-icon"</span>,</td></tr> +<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> <span class='macro'>G_CALLBACK (showicon_settings_changed)<span class='macro_popup'>((GCallback) (showicon_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> netspeed, 0);</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"> g_signal_connect_object (netspeed->settings, <span class='string_literal'>"changed::show-quality-icon"</span>,</td></tr> +<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> <span class='macro'>G_CALLBACK (showqualityicon_settings_changed)<span class='macro_popup'>((GCallback) (showqualityicon_settings_changed))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> netspeed, 0);</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"> action_group = gtk_action_group_new (<span class='string_literal'>"Netspeed Applet Actions"</span>);</td></tr> +<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>GETTEXT_PACKAGE<span class='macro_popup'>"mate-applets"</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> gtk_action_group_add_actions (action_group,</td></tr> +<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> netspeed_applet_menu_actions,</td></tr> +<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> <span class='macro'>G_N_ELEMENTS (netspeed_applet_menu_actions)<span class='macro_popup'>(sizeof (netspeed_applet_menu_actions) / sizeof ((netspeed_applet_menu_actions<br>)[0]))</span></span>,</td></tr> +<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> netspeed);</td></tr> +<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> mate_panel_applet_setup_menu_from_resource (applet,</td></tr> +<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> <span class='macro'>NETSPEED_RESOURCE_PATH<span class='macro_popup'>"/org/mate/mate-applets/netspeed/"</span></span> <span class='string_literal'>"netspeed-menu.xml"</span>,</td></tr> +<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> action_group);</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"> atk_obj = gtk_widget_get_accessible (<span class='macro'>GTK_WIDGET (applet)<span class='macro_popup'>((((GtkWidget*) (void *) ((applet)))))</span></span>);</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'>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->g_class &&<br> __inst->g_class->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="1756"><td class="num" id="LN1756">1756</td><td class="line"> atk_object_set_name (atk_obj, <span class='macro'>_(<span class='string_literal'>"MATE Netspeed"</span>)<span class='macro_popup'>dcgettext (((void*)0), "MATE Netspeed", 5)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> atk_object_set_description (atk_obj,</td></tr> +<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"A little applet that displays some information on the traffic on the specified network device"</span>)<span class='macro_popup'>dcgettext (((void*)0), "A little applet that displays some information on the traffic on the specified network device"<br>, 5)</span></span>);</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"> </td></tr> +<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> g_object_unref (action_group);</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'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line">}</td></tr> +<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"><span class='macro'>PANEL_APPLET_FACTORY (<span class='string_literal'>"NetspeedAppletFactory"</span>,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("NetspeedAppletFactory"<br>,(!(0)), netspeed_applet_get_type (), netspeed_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> <span class='macro'>NETSPEED_TYPE_APPLET,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("NetspeedAppletFactory"<br>,(!(0)), netspeed_applet_get_type (), netspeed_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> <span class='string_literal'><span class='macro'>"NetspeedApplet"</span>,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("NetspeedAppletFactory"<br>,(!(0)), netspeed_applet_get_type (), netspeed_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> <span class='macro'>netspeed_applet_factory,<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("NetspeedAppletFactory"<br>,(!(0)), netspeed_applet_get_type (), netspeed_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>int main(int argc, char *argv[]) { GOptionContext *context; GError<br> *error; int retval; do { bindtextdomain ("mate-applets", "/usr/local/share/locale"<br>); bind_textdomain_codeset ("mate-applets", "UTF-8"); if ((!(<br>0))) textdomain ("mate-applets"); } while (0); context = g_option_context_new<br>(""); g_option_context_add_group (context, gtk_get_option_group<br>((!(0)))); error = ((void*)0); if (!g_option_context_parse (context<br>, &argc, &argv, &error)) { if (error) { g_printerr<br> ("Cannot parse arguments: %s.\n", error->message); g_error_free<br> (error); } else { g_printerr ("Cannot parse arguments.\n"); }<br> g_option_context_free (context); return 1; } gtk_init (&<br>argc, &argv); retval = mate_panel_applet_factory_main ("NetspeedAppletFactory"<br>,(!(0)), netspeed_applet_get_type (), netspeed_applet_factory<br>, ((void*)0)); g_option_context_free (context); return retval<br>; }</span></span></td></tr> +</table></body></html> diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-ad73bf.html b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-ad73bf.html new file mode 100644 index 00000000..1ed208cf --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/report-ad73bf.html @@ -0,0 +1,1232 @@ +<!doctype html> +<html> +<head> +<title>load-graph.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 Division by zero --> + +<!-- BUGTYPE Division by zero --> + +<!-- BUGCATEGORY Logic error --> + +<!-- BUGFILE /rootdir/multiload/src/load-graph.c --> + +<!-- FILENAME load-graph.c --> + +<!-- FUNCTIONNAME load_graph_draw --> + +<!-- ISSUEHASHCONTENTOFLINEINCONTEXT ad73bf3566f279631c9aeacbdd372d6a --> + +<!-- BUGLINE 106 --> + +<!-- BUGCOLUMN 20 --> + +<!-- BUGPATHLENGTH 14 --> + +<!-- BUGMETAEND --> +<!-- REPORTHEADER --> +<h3>Bug Summary</h3> +<table class="simpletable"> +<tr><td class="rowname">File:</td><td>multiload/src/load-graph.c</td></tr> +<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 106, column 20</a><br />Division by zero</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 load-graph.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=none -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/multiload/src -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I . -D MULTILOAD_RESOURCE_PATH="/org/mate/mate-applets/multiload/" -I /usr/include/mate-panel-4.0/libmate-panel-applet -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/libgtop-2.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gio-unix-2.0 -internal-isystem /usr/lib64/clang/16/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 -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/multiload/src -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -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/2023-10-08-232600-14316-1 -x c load-graph.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": {"30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "37": 1, "40": 1, "43": 1, "47": 1, "48": 1, "49": 1, "50": 1, "51": 1, "52": 1, "54": 1, "60": 1, "66": 1, "67": 1, "68": 1, "69": 1, "72": 1, "76": 1, "77": 1, "78": 1, "79": 1, "80": 1, "81": 1, "83": 1, "90": 1, "91": 1, "92": 1, "106": 1, "237": 1, "238": 1, "239": 1, "240": 1, "243": 1, "245": 1, "248": 1, "250": 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"/> + + </g> +</svg> +<script type='text/javascript'> +const arrowIndices = [ 26,25,23,20,19,18,15,13,9,7,5,5,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='directive'>#include <config.h></span></td></tr> +<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='directive'>#include <stdio.h></span></td></tr> +<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"><span class='directive'>#include <sys/stat.h></span></td></tr> +<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"><span class='directive'>#include <unistd.h></span></td></tr> +<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"><span class='directive'>#include <signal.h></span></td></tr> +<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"><span class='directive'>#include <dirent.h></span></td></tr> +<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"><span class='directive'>#include <string.h></span></td></tr> +<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"><span class='directive'>#include <time.h></span></td></tr> +<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"><span class='directive'>#include <glib.h></span></td></tr> +<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"><span class='directive'>#include <gdk/gdkx.h></span></td></tr> +<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"><span class='directive'>#include <gtk/gtk.h></span></td></tr> +<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"><span class='directive'>#include <gio/gio.h></span></td></tr> +<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"><span class='directive'>#include <mate-panel-applet.h></span></td></tr> +<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"><span class='directive'>#include <mate-panel-applet-gsettings.h></span></td></tr> +<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"><span class='directive'>#include <math.h></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='directive'>#include "global.h"</span></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='comment'>/*</span></td></tr> +<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>Shifts data right</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'>data[i+1] = data[i]</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'>data[i] are int*, so we just move the pointer, not the data.</span></td></tr> +<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>But moving data loses data[n-1], so we save data[n-1] and reuse</span></td></tr> +<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>it as new data[0]. In fact, we rotate data[].</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'>*/</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='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line">shift_right(LoadGraph *g)</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"> guint64 *last_data;</td></tr> +<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> gsize i;</td></tr> +<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> <span class='comment'>/* data[g->draw_width - 1] becomes data[0] */</span></td></tr> +<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> last_data = g->data[g->draw_width - 1];</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'>/* data[i+1] = data[i] */</span></td></tr> +<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> <span class='keyword'>for</span> (i = g->draw_width - 1; i != 0; --i)</td></tr> +<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> g->data[i] = g->data[i - 1];</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"> g->data[0] = last_data;</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"> </td></tr> +<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='comment'>/* Redraws the backing pixmap for the load graph and updates the window */</span></td></tr> +<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span id="start17"><span class='keyword'>static</span></span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line">load_graph_draw (LoadGraph *g)</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"> guint <span id="start16"><span id="end17">i</span></span>, j, k;</td></tr> +<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> cairo_t *cr;</td></tr> +<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> MultiloadApplet *multiload;</td></tr> +<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> multiload = g->multiload;</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='comment'>/* we might get called before the configure event so that</span></td></tr> +<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='comment'>* g->disp->allocation may not have the correct size</span></td></tr> +<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> <span class='comment'>* (after the user resized the applet in the prop dialog). */</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 id="start15"><span id="end16"><span class='keyword'>if</span></span></span> (<span id="start14"><span class="mrange"><span id="end15">!</span></span>g->surface</span>)</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgEvent" style="margin-left:7ex"><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)">←</a></div></td><td>Assuming field 'surface' is non-null</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">→</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:3ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> g->surface = gdk_window_create_similar_surface (gtk_widget_get_window (g->disp),</td></tr> +<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> CAIRO_CONTENT_COLOR,</td></tr> +<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> (<span class='keyword'>int</span>) g->draw_width,</td></tr> +<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> (<span class='keyword'>int</span>) g->draw_height);</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 id="start11"><span id="end12"><span id="start13"><span id="end14">cr</span></span></span></span> = cairo_create (<span id="start12"><span id="end13">g</span></span>->surface);</td></tr> +<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> cairo_set_line_width (cr, 1.0);</td></tr> +<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);</td></tr> +<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);</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'>/* all graphs except Load and Net go this path */</span></td></tr> +<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> <span id="start10"><span id="end11"><span class='keyword'>switch</span></span></span> (<span id="start9"><span id="end10">g</span></span>->id) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:3ex"><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)">←</a></div></td><td>Control jumps to 'case graph_netload2:' at line 75</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">→</a></div></td></tr></table></div></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'>/* This is for network graph */</span></td></tr> +<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='keyword'>case</span> graph_netload2: {</td></tr> +<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span id="start8"><span id="end9">guint64</span></span> maxnet = 1;</td></tr> +<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> guint64 segments = 1;</td></tr> +<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> guint64 net_threshold;</td></tr> +<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> guint level = 0;</td></tr> +<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='keyword'>double</span> ratio;</td></tr> +<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> <span class='keyword'>double</span> spacing;</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 id="start7"><span id="end8"><span class='keyword'>for</span></span></span> (i = 0; <span id="start6"><span class="mrange"><span id="end7">i</span></span> < g->draw_width</span>; i++)</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:17ex"><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)">←</a></div></td><td>Assuming 'i' is >= field 'draw_width'</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">→</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:5ex"><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)">←</a></div></td><td>Loop condition is false. Execution continues on line 90</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">→</a></div></td></tr></table></div></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"> g->pos [i] = g->draw_height - 1;</td></tr> +<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='keyword'>if</span> (g->data[i][3] > maxnet)</td></tr> +<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> maxnet = g->data[i][3];</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"> <span class='comment'>//printf("max = %d ", maxnet);</span></td></tr> +<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> <span id="start5"><span id="end6"><span class='keyword'>if</span></span></span> (<span id="start4"><span class="mrange"><span id="end5">maxnet</span></span> > multiload->net_threshold3</span>) {</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:9ex"><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)">←</a></div></td><td>Assuming 'maxnet' is > field 'net_threshold3'</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">→</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:5ex"><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)">←</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span id="start1"><span class="mrange"><span id="end2"><span id="start3"><span id="end4">net_threshold</span></span></span></span> = <span id="start2"><span id="end3">multiload</span></span>->net_threshold3</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgEvent" style="margin-left:7ex"><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)">←</a></div></td><td>The value 0 is assigned to 'net_threshold'</td><td><div class="PathNav"><a href="#EndPath" title="Next event (14)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> <span id="start0"><span id="end1">level</span></span> = 3;</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'>else</span></td></tr> +<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>if</span> (maxnet > multiload->net_threshold2) {</td></tr> +<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> net_threshold = multiload->net_threshold2;</td></tr> +<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> level = 2;</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'>else</span> {</td></tr> +<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> net_threshold = multiload->net_threshold1;</td></tr> +<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> <span class='keyword'>if</span> (maxnet >= multiload->net_threshold1)</td></tr> +<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> level = 1;</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"> <span class='comment'>//printf("level %d maxnet = %d ", level, maxnet);</span></td></tr> +<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> maxnet = <span class="mrange">maxnet<span id="end0">/</span>net_threshold</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">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">←</a></div></td><td>Division by zero</td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> segments = <span class='macro'>MAX (maxnet+1,1)<span class='macro_popup'>(((maxnet+1) > (1)) ? (maxnet+1) : (1))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> ratio = (<span class='keyword'>double</span>) g->draw_height / (<span class='keyword'>double</span>) (net_threshold*segments);</td></tr> +<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>//printf("segments %d ratio = %f t1=%ld t2=%ld t3=%ld t=%ld\n", segments, ratio, multiload->net_threshold1, multiload->net_threshold2, multiload->net_threshold3, multiload->net_threshold);</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'>for</span> (j = 0; j < g->n-1; j++)</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"> gdk_cairo_set_source_rgba (cr, &(g->colors [j]));</td></tr> +<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < g->draw_width; i++)</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'>double</span> x = (<span class='keyword'>double</span>) (g->draw_width - i) - 0.5;</td></tr> +<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> cairo_move_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] + 0.5);</td></tr> +<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> cairo_line_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] - 0.5 - (((<span class='keyword'>double</span>) g->data [i][j] * ratio)));</td></tr> +<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> g->pos [i] -= (guint64) ((<span class='keyword'>double</span>) g->data [i][j] * ratio);</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"> cairo_stroke (cr);</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"> </td></tr> +<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>for</span> (j = g->n-1; j < g->n; j++)</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"> gdk_cairo_set_source_rgba (cr, &(g->colors [j]));</td></tr> +<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < g->draw_width; i++)</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'>double</span> x = (<span class='keyword'>double</span>) (g->draw_width - i) - 0.5;</td></tr> +<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> cairo_move_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] + 0.5);</td></tr> +<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> cairo_line_to (cr, x, 0.5);</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"> cairo_stroke (cr);</td></tr> +<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> }</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='comment'>/* draw grid lines if needed */</span></td></tr> +<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> gdk_cairo_set_source_rgba (cr, &(g->colors [4]));</td></tr> +<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>for</span> (k = 0; k < segments -1; k++)</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"> spacing = ((<span class='keyword'>double</span>) g->draw_height / (<span class='keyword'>double</span>) segments) * (k+1);</td></tr> +<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> cairo_move_to (cr, 0.5, spacing);</td></tr> +<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> cairo_line_to (cr, (<span class='keyword'>double</span>) g->draw_width - 0.5, spacing);</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"> cairo_stroke (cr);</td></tr> +<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> <span class='comment'>/* draw indicator if needed */</span></td></tr> +<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='keyword'>if</span> (level > 0)</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"> gdk_cairo_set_source_rgba (cr, &(g->colors [5]));</td></tr> +<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> <span class='keyword'>for</span> (k = 0; k< level; k++ )</td></tr> +<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> cairo_rectangle (cr,</td></tr> +<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> 0.5, (<span class='keyword'>double</span>) k * 2.0 * (<span class='keyword'>double</span>) g->draw_height / 5.0,</td></tr> +<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> 5.0, (<span class='keyword'>double</span>) g->draw_height / 5.0);</td></tr> +<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> cairo_fill(cr);</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"> cairo_stroke (cr);</td></tr> +<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> <span class='keyword'>break</span>;</td></tr> +<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> }</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"> <span class='comment'>/* this is Load graph */</span></td></tr> +<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> <span class='keyword'>case</span> graph_loadavg: {</td></tr> +<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='keyword'>double</span> load;</td></tr> +<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> guint64 maxload = 1;</td></tr> +<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < g->draw_width; i++)</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"> g->pos [i] = g->draw_height - 1;</td></tr> +<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> <span class='comment'>/* find maximum value */</span></td></tr> +<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='keyword'>if</span> (g->data[i][0] > maxload)</td></tr> +<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> maxload = g->data[i][0];</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"> load = ceil ((<span class='keyword'>double</span>) maxload / (<span class='keyword'>double</span>) g->draw_height) + 1.0;</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'>for</span> (j = 0; j < g->n; j++)</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"> gdk_cairo_set_source_rgba (cr, &(g->colors [j]));</td></tr> +<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < g->draw_width; i++)</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"> <span class='keyword'>double</span> x = (<span class='keyword'>double</span>) (g->draw_width - i) - 0.5;</td></tr> +<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> cairo_move_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] + 0.5);</td></tr> +<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class='keyword'>if</span> (j == 0)</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"> cairo_line_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] - (((<span class='keyword'>double</span>) g->data [i][j] - 0.5)/load));</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='keyword'>else</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"> cairo_line_to (cr, x, 0.5);</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"> g->pos [i] -= (guint64) ((<span class='keyword'>double</span>) g->data [i][j] / load);</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"> cairo_stroke (cr);</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"> </td></tr> +<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> <span class='comment'>/* draw grid lines in Load graph if needed */</span></td></tr> +<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> gdk_cairo_set_source_rgba (cr, &(g->colors [2]));</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'>double</span> spacing;</td></tr> +<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='keyword'>for</span> (k = 0; k < load - 1; k++)</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"> spacing = ((<span class='keyword'>double</span>) g->draw_height/load) * (k+1);</td></tr> +<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> cairo_move_to (cr, 0.5, spacing);</td></tr> +<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> cairo_line_to (cr, (<span class='keyword'>double</span>) g->draw_width - 0.5, spacing);</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"> </td></tr> +<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> cairo_stroke (cr);</td></tr> +<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> <span class='keyword'>break</span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> <span class='keyword'>default</span>:</td></tr> +<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>for</span> (i = 0; i < g->draw_width; i++)</td></tr> +<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> g->pos [i] = g->draw_height - 1;</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'>for</span> (j = 0; j < g->n; j++)</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"> gdk_cairo_set_source_rgba (cr, &(g->colors [j]));</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'>for</span> (i = 0; i < g->draw_width; i++)</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'>if</span> (g->data [i][j] != 0)</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'>double</span> x = (<span class='keyword'>double</span>) (g->draw_width - i) - 0.5;</td></tr> +<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> cairo_move_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] + 0.5);</td></tr> +<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> cairo_line_to (cr, x, (<span class='keyword'>double</span>) g->pos[i] - (<span class='keyword'>double</span>) g->data [i][j] - 0.5);</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"> g->pos [i] -= g->data [i][j];</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"> cairo_stroke (cr);</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"> }</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"> gtk_widget_queue_draw (g->disp);</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"> cairo_destroy (cr);</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"> </td></tr> +<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"><span class='comment'>/* Updates the load graph when the timeout expires */</span></td></tr> +<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line">load_graph_update (LoadGraph *g)</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 id="start25"><span class='keyword'>if</span></span> (<span id="start24"><span class="mrange"><span id="end25">g</span></span>->data == <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="Path1" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming field 'data' is not equal to NULL</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</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="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 id="start21"><span id="end22"><span id="start23"><span id="end24">shift_right</span></span></span></span>(<span id="start22"><span id="end23">g</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 id="start20"><span id="end21"><span class='keyword'>if</span></span></span> (<span id="start19"><span class="mrange"><span id="end20">g</span></span>->tooltip_update</span>)</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">←</a></div></td><td>Assuming field 'tooltip_update' is 0</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">→</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:5ex"><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)">←</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> multiload_applet_tooltip_update (g);</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 id="start18"><span id="end19">g</span></span>->get_data (g->draw_height, g->data [0], g);</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"> <span class="mrange"><span id="end18">load_graph_draw</span> (g)</span>;</td></tr> +<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:5ex"><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)">←</a></div></td><td>Calling 'load_graph_draw'</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">→</a></div></td></tr></table></div></td></tr> +<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</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="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'>void</span></td></tr> +<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line">load_graph_unalloc (LoadGraph *g)</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"> gsize i;</td></tr> +<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> <span class='keyword'>if</span> (!g->allocated)</td></tr> +<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> <span class='keyword'>return</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"> <span class='keyword'>for</span> (i = 0; i < g->draw_width; 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"> g_free (g->data [i]);</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"> </td></tr> +<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> g_free (g->data);</td></tr> +<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> g_free (g->pos);</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"> g->pos = <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"> g->data = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</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"> g->size = <span class='macro'>CLAMP (g_settings_get_uint (g->multiload->settings, GRAPH_SIZE_KEY),<span class='macro_popup'>(((g_settings_get_uint (g->multiload->settings, "size")<br>) > (1000)) ? (1000) : (((g_settings_get_uint (g->multiload<br>->settings, "size")) < (10)) ? (10) : (g_settings_get_uint<br> (g->multiload->settings, "size"))))</span></span></td></tr> +<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='macro'>GRAPH_SIZE_MIN,<span class='macro_popup'>(((g_settings_get_uint (g->multiload->settings, "size")<br>) > (1000)) ? (1000) : (((g_settings_get_uint (g->multiload<br>->settings, "size")) < (10)) ? (10) : (g_settings_get_uint<br> (g->multiload->settings, "size"))))</span></span></td></tr> +<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> <span class='macro'>GRAPH_SIZE_MAX)<span class='macro_popup'>(((g_settings_get_uint (g->multiload->settings, "size")<br>) > (1000)) ? (1000) : (((g_settings_get_uint (g->multiload<br>->settings, "size")) < (10)) ? (10) : (g_settings_get_uint<br> (g->multiload->settings, "size"))))</span></span>;</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='keyword'>if</span> (g->surface) {</td></tr> +<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> cairo_surface_destroy (g->surface);</td></tr> +<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> g->surface = <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"> }</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"> g->allocated = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line">}</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"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line">load_graph_alloc (LoadGraph *g)</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"> gsize i;</td></tr> +<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gsize data_size;</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"> <span class='keyword'>if</span> (g->allocated)</td></tr> +<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> <span class='keyword'>return</span>;</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"> g->data = <span class='macro'>g_new0 (guint64 *, g->draw_width)<span class='macro_popup'>(guint64 * *) (__extension__ ({ gsize __n = (gsize) (g->draw_width<br>); gsize __s = sizeof (guint64 *); gpointer __p; if (__s == 1<br>) __p = g_malloc0 (__n); else if (__builtin_constant_p (__n) &&<br> (__s == 0 || __n <= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s<br>); __p; }))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> g->pos = <span class='macro'>g_new0 (guint64, g->draw_width)<span class='macro_popup'>(guint64 *) (__extension__ ({ gsize __n = (gsize) (g->draw_width<br>); gsize __s = sizeof (guint64); gpointer __p; if (__s == 1) __p<br> = g_malloc0 (__n); else if (__builtin_constant_p (__n) &&<br> (__s == 0 || __n <= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s<br>); __p; }))</span></span>;</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"> data_size = <span class='keyword'>sizeof</span> (guint64) * g->n;</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'>for</span> (i = 0; i < g->draw_width; i++) {</td></tr> +<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> g->data [i] = g_malloc0 (data_size);</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"> </td></tr> +<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> g->allocated = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></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"> </td></tr> +<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"><span class='keyword'>static</span> gint</td></tr> +<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">load_graph_configure (GtkWidget *widget, GdkEventConfigure *event,</td></tr> +<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> gpointer data_ptr)</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"> GtkAllocation allocation;</td></tr> +<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> LoadGraph *c = (LoadGraph *) data_ptr;</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"> load_graph_unalloc (c);</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"> gtk_widget_get_allocation (c->disp, &allocation);</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"> c->draw_width = (gsize) allocation.width;</td></tr> +<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> c->draw_height = (guint64) allocation.height;</td></tr> +<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> c->draw_width = <span class='macro'>MAX (c->draw_width, 1)<span class='macro_popup'>(((c->draw_width) > (1)) ? (c->draw_width) : (1))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> c->draw_height = <span class='macro'>MAX (c->draw_height, 1)<span class='macro_popup'>(((c->draw_height) > (1)) ? (c->draw_height) : (1))</span></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"> load_graph_alloc (c);</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"> <span class='keyword'>if</span> (!c->surface)</td></tr> +<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> c->surface = gdk_window_create_similar_surface (gtk_widget_get_window (c->disp),</td></tr> +<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> CAIRO_CONTENT_COLOR,</td></tr> +<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> (<span class='keyword'>int</span>) c->draw_width,</td></tr> +<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> (<span class='keyword'>int</span>) c->draw_height);</td></tr> +<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> gtk_widget_queue_draw (widget);</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'>return</span> <span class='macro'>TRUE<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"> </td></tr> +<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"><span class='keyword'>static</span> gint</td></tr> +<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line">load_graph_expose (GtkWidget *widget,</td></tr> +<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> cairo_t *cr,</td></tr> +<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> gpointer data_ptr)</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"> LoadGraph *g = (LoadGraph *) data_ptr;</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"> cairo_set_source_surface (cr, g->surface, 0, 0);</td></tr> +<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> cairo_paint (cr);</td></tr> +<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</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="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'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">load_graph_destroy (GtkWidget *widget, gpointer data_ptr)</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"> LoadGraph *g = (LoadGraph *) data_ptr;</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"> load_graph_stop (g);</td></tr> +<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> gtk_widget_destroy(widget);</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"> </td></tr> +<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line">load_graph_clicked (GtkWidget *widget, GdkEventButton *event, LoadGraph *load)</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"> load->multiload->last_clicked = load->id;</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='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</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"> </td></tr> +<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line">load_graph_enter_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)</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"> LoadGraph *graph;</td></tr> +<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> graph = (LoadGraph *)data;</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"> graph->tooltip_update = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> multiload_applet_tooltip_update(graph);</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"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</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"><span class='keyword'>static</span> gboolean</td></tr> +<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line">load_graph_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)</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"> LoadGraph *graph;</td></tr> +<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> graph = (LoadGraph *)data;</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"> graph->tooltip_update = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></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'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></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"> </td></tr> +<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">load_graph_load_config (LoadGraph *g)</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"> gchar *name, *temp;</td></tr> +<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> guint i;</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"> <span class='keyword'>if</span> (!g->colors)</td></tr> +<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> g->colors = <span class='macro'>g_new0(GdkRGBA, g->n)<span class='macro_popup'>(GdkRGBA *) (__extension__ ({ gsize __n = (gsize) (g->n); gsize<br> __s = sizeof (GdkRGBA); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) && (__s ==<br> 0 || __n <= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</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"> <span class='keyword'>for</span> (i = 0; i < g->n; i++)</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"> name = g_strdup_printf (<span class='string_literal'>"%s-color%u"</span>, g->name, i);</td></tr> +<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> temp = g_settings_get_string(g->multiload->settings, name);</td></tr> +<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span class='keyword'>if</span> (!temp)</td></tr> +<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> temp = <span class='macro'>g_strdup (<span class='string_literal'>"#000000"</span>)<span class='macro_popup'>g_strdup_inline ("#000000")</span></span>;</td></tr> +<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> gdk_rgba_parse(&(g->colors[i]), temp);</td></tr> +<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> g_free(temp);</td></tr> +<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> g_free(name);</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">}</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">LoadGraph *</td></tr> +<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line">load_graph_new (MultiloadApplet *ma, guint n, <span class='keyword'>const</span> gchar *label,</td></tr> +<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> gint id, guint speed, guint size, gboolean visible,</td></tr> +<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='keyword'>const</span> gchar *name, LoadGraphDataFunc get_data)</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"> LoadGraph *g;</td></tr> +<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> MatePanelAppletOrient orient;</td></tr> +<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> g = <span class='macro'>g_new0 (LoadGraph, 1)<span class='macro_popup'>(LoadGraph *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (LoadGraph); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) && (__s ==<br> 0 || __n <= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr> +<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> g->visible = visible;</td></tr> +<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> g->name = name;</td></tr> +<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> g->n = n;</td></tr> +<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> g->id = id;</td></tr> +<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> g->speed = speed;</td></tr> +<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> g->size = size;</td></tr> +<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> g->pixel_size = mate_panel_applet_get_size (ma->applet);</td></tr> +<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> g->tooltip_update = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> g->multiload = ma;</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"> g->main_widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</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"> g->box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</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"> orient = mate_panel_applet_get_orient (g->multiload->applet);</td></tr> +<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>switch</span> (orient)</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"> <span class='keyword'>case</span> MATE_PANEL_APPLET_ORIENT_UP:</td></tr> +<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> <span class='keyword'>case</span> MATE_PANEL_APPLET_ORIENT_DOWN:</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"> g->orient = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='keyword'>break</span>;</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='keyword'>case</span> MATE_PANEL_APPLET_ORIENT_LEFT:</td></tr> +<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> <span class='keyword'>case</span> MATE_PANEL_APPLET_ORIENT_RIGHT:</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"> g->orient = <span class='macro'>TRUE<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"> <span class='keyword'>break</span>;</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='keyword'>default</span>:</td></tr> +<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr (((gchar*) 0), "load-graph.c", 448<br>, ((const char*) (__func__)), ((void*)0)); } while (0)</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"> </td></tr> +<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> g->frame = gtk_frame_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr> +<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> gtk_frame_set_shadow_type (<span class='macro'>GTK_FRAME (g->frame)<span class='macro_popup'>((((GtkFrame*) (void *) ((g->frame)))))</span></span>, GTK_SHADOW_IN);</td></tr> +<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (g->frame)<span class='macro_popup'>((((GtkContainer*) (void *) ((g->frame)))))</span></span>, g->box);</td></tr> +<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (g->main_widget)<span class='macro_popup'>((((GtkBox*) (void *) ((g->main_widget)))))</span></span>, g->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="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"> load_graph_load_config (g);</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"> g->get_data = get_data;</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->timer_index = -1;</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"> <span class='keyword'>if</span> (g->orient)</td></tr> +<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> gtk_widget_set_size_request (g->main_widget, -1, (gint) g->size);</td></tr> +<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='keyword'>else</span></td></tr> +<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> gtk_widget_set_size_request (g->main_widget, (gint) g->size, -1);</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"> g->disp = gtk_drawing_area_new ();</td></tr> +<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> gtk_widget_set_events (g->disp, GDK_EXPOSURE_MASK |</td></tr> +<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> GDK_ENTER_NOTIFY_MASK |</td></tr> +<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> GDK_LEAVE_NOTIFY_MASK |</td></tr> +<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> GDK_BUTTON_PRESS_MASK);</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='macro'>g_signal_connect (g->disp, <span class='string_literal'>"draw"</span>,<span class='macro_popup'>g_signal_connect_data ((g->disp), ("draw"), (((GCallback) (<br>load_graph_expose))), (g), ((void*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> <span class='macro'>G_CALLBACK (load_graph_expose), g)<span class='macro_popup'>g_signal_connect_data ((g->disp), ("draw"), (((GCallback) (<br>load_graph_expose))), (g), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='macro'>g_signal_connect (g->disp, <span class='string_literal'>"configure-event"</span>,<span class='macro_popup'>g_signal_connect_data ((g->disp), ("configure-event"), (((<br>GCallback) (load_graph_configure))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='macro'>G_CALLBACK (load_graph_configure), g)<span class='macro_popup'>g_signal_connect_data ((g->disp), ("configure-event"), (((<br>GCallback) (load_graph_configure))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='macro'>g_signal_connect (g->disp, <span class='string_literal'>"destroy"</span>,<span class='macro_popup'>g_signal_connect_data ((g->disp), ("destroy"), (((GCallback<br>) (load_graph_destroy))), (g), ((void*)0), (GConnectFlags) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> <span class='macro'>G_CALLBACK (load_graph_destroy), g)<span class='macro_popup'>g_signal_connect_data ((g->disp), ("destroy"), (((GCallback<br>) (load_graph_destroy))), (g), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> <span class='macro'>g_signal_connect (g->disp, <span class='string_literal'>"button-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((g->disp), ("button-press-event"), (<br>((GCallback) (load_graph_clicked))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='macro'>G_CALLBACK (load_graph_clicked), g)<span class='macro_popup'>g_signal_connect_data ((g->disp), ("button-press-event"), (<br>((GCallback) (load_graph_clicked))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='macro'>g_signal_connect (g->disp, <span class='string_literal'>"enter-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((g->disp), ("enter-notify-event"), (<br>((GCallback) (load_graph_enter_cb))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='macro'>G_CALLBACK(load_graph_enter_cb), g)<span class='macro_popup'>g_signal_connect_data ((g->disp), ("enter-notify-event"), (<br>((GCallback) (load_graph_enter_cb))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr> +<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='macro'>g_signal_connect (g->disp, <span class='string_literal'>"leave-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((g->disp), ("leave-notify-event"), (<br>((GCallback) (load_graph_leave_cb))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr> +<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='macro'>G_CALLBACK(load_graph_leave_cb), g)<span class='macro_popup'>g_signal_connect_data ((g->disp), ("leave-notify-event"), (<br>((GCallback) (load_graph_leave_cb))), (g), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</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"> gtk_box_pack_start (<span class='macro'>GTK_BOX (g->box)<span class='macro_popup'>((((GtkBox*) (void *) ((g->box)))))</span></span>, g->disp, <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="487"><td class="num" id="LN487">487</td><td class="line"> gtk_widget_show_all(g->box);</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'>return</span> g;</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"> </td></tr> +<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line">load_graph_start (LoadGraph *g)</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"> guint event_source_id;</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> (g->timer_index != -1)</td></tr> +<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> g_source_remove ((guint) g->timer_index);</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"> event_source_id = g_timeout_add (g->speed,</td></tr> +<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> (GSourceFunc) load_graph_update, g);</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"> g->timer_index = (gint) event_source_id;</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"> </td></tr> +<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"><span class='keyword'>void</span></td></tr> +<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line">load_graph_stop (LoadGraph *g)</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"> <span class='keyword'>if</span> (g->timer_index != -1)</td></tr> +<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> g_source_remove ((guint) g->timer_index);</td></tr> +<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> </td></tr> +<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> g->timer_index = -1;</td></tr> +<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line">}</td></tr> +</table></body></html> diff --git a/2023-10-08-232600-14316-1@fd9dbddae4cb_master/scanview.css b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/scanview.css new file mode 100644 index 00000000..cf8a5a6a --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_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/2023-10-08-232600-14316-1@fd9dbddae4cb_master/sorttable.js b/2023-10-08-232600-14316-1@fd9dbddae4cb_master/sorttable.js new file mode 100644 index 00000000..32faa078 --- /dev/null +++ b/2023-10-08-232600-14316-1@fd9dbddae4cb_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 ? ' <font face="webdings">5</font>' : ' ▴'; + 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 ? ' <font face="webdings">6</font>' : ' ▾'; + 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 ? ' <font face="webdings">6</font>' : ' ▾'; + 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); + } +}; |