Hi, It's just a time for digging our skeletons out of the code! I've done a simple `grep` for 'hacks' and 'ugliness' in our code. File is attached. Please, try to remove hacks if possible and next time, try to even avoid implementing 'hacks' ;) (because I'd find them again) ;) I have to admit that my `simple grep` for these skeletons is not 100% correct, not even 90%, there are several false-positive matches. Anyway, it shows that there are several pieces of code that really need rewriting for openSUSE 11.0. Thanks & Bye Lukas -- Lukas Ocilka, YaST Developer (xn--luk-gla45d) ----------------------------------------------------------------- SUSE LINUX, s. r. o., Lihovarska 1060/12, Praha 9, Czech Republic add-on/src/add-on-workflow.ycp: // FIXME: this function is ugly add-on/src/add-on-workflow.ycp: // a little hack because of packager leaving autoinstallation/doc/web/xsl/myxref.xsl:<!-- specify a type attribute for the anchor. The dirty hack --> autoinstallation/doc/misc/multiplesource-sa.dsl:;;Formal Paras are ugly by default! autoinstallation/doc/autoyast.dsl:;;Formal Paras are ugly by default! backup/src/functions.ycp: // chack if partition is now mounted backup/src/ui.ycp: // "Renaming", Cron settings, It seems to be a hack }8-> bootloader/src/modules/BootCommon.ycp: // testsuite hack bootloader/src/modules/BootELILO.ycp: // FIXME: UGLY HACK because of testsuites bootloader/src/routines/misc.ycp:// UGHLY HACK because of testsuites build-test/yast2-build-test.spec:- quick Beta hack: deleted macros from BuildRequires and insert control-center-gnome/etc/Makefile.am:# hacks core/agent-ini/src/IniFile.h: * @param rewrite a #19066 hack - if rewriting is active, .st accesses rewrite_by core/agent-ini/src/IniFile.h: * @param rewrite a #19066 hack - if rewriting is active, .st accesses rewrite_by core/agents-non-y2/ag_hostnames: #hack: not quoting $2 enables scanning for a particular version core/agent-modules/src/ModulesConf.cc:/* Temporary hack, the whole parser should be reworked */ core/libycp/src/YCPDebugger.cc: // discarded, thus this must be the last check. Kind of ugly! core/libycp/src/YBlock.cc: // HACK ahead: Y2ALLGLOBAL should make all core/libycp/src/YCPBuiltinTerm.cc:// not static to get seen by l_select hack core/libyui/doc/FAQs/why-widget-labels-above-and-not-at-the-left.txt:account by every YCP hacker - everywhere, in each dialog. core/libyui/doc/FAQs/notify-events.txt:how ui-ncurses behaves. It's up to the YCP hackers to decide wheter core/libyui/doc/FAQs/notify-events.txt:something is sufficient or not. And it's up to the UI hackers to decide core/libyui/doc/FAQs/notify-events.txt:in the next release. Come to an agreement among the YCP hackers and make core/libyui/doc/FAQs/notify-events.txt:> in the next release. Come to an agreement among the YCP hackers and make core/libyui/doc/html/index.html:to.</p><p><span class="i"><span class="b">Note:</span> This dialog looks extremely ugly - don't try core/libyui/doc/html/UI-Events.html: hackers or users is pure coincidence and not intended. Ah yes, and core/libyui/doc/html/examples/SelectionBox5.ycp: "Minimalistic selbox (rather ugly): ", core/libyui/doc/YCP-UI-layout.xml: <para><emphasis role="i"><emphasis role="b">Note:</emphasis> This dialog looks extremely ugly - don't try core/libyui/doc/YCP-UI-layout.html:<i><b>Note:</b> This dialog looks extremely ugly - don't try this at home, kids</i> core/libyui/doc/events/event-intro.html:present or past YaST2 hackers or users is pure coincidence and not intended. core/libyui/doc/events/event-intro.xml: hackers or users is pure coincidence and not intended. Ah yes, and core/libyui/doc/examples/SelectionBox5.ycp: "Minimalistic selbox (rather ugly): ", country/language/src/modules/Language.ycp: // FIXME ugly hack: see bug #47711 devtools/yxp/yxp.y:/* hack because of foreach . TODO move it there */ devtools/ydoc/src/ydoc2: # UGLY devtools/yast2/check_ycp/doc/html/check_ycp_html-check.html: paragraphs. This just looks plain ugly, even more so if this results in devtools/yast2/check_ycp/doc/html/check_ycp_emacs.html: If you are a real hardcore YCP hacker, you can even go so far and change the devtools/yast2/check_ycp/doc/check_ycp.sgml:paragraphs. This just looks plain ugly, even more so if this results in devtools/yast2/check_ycp/doc/check_ycp.sgml:If you are a real hardcore YCP hacker, you can even go so far and change the devtools/yast2/check_ycp/doc/check_ycp-contents.xml: paragraphs. This just looks plain ugly, even more so if this results in devtools/yast2/check_ycp/doc/check_ycp-contents.xml: If you are a real hardcore YCP hacker, you can even go so far and change the devtools/yast2/check_ycp/check_ycp: # Hack: let's not check a 'module "Foo"' declaration, just uppercasing devtools/ycpdoc/src/ycpdoc: # a hack to write a part of module index: devtools/devtools/bin/y2autoconf:# "po" hacking: y2automake runs after us so "po" may not have Makefile.am yet devtools/devtools/bin/y2automake:# Build hack: devtools/devtools/admin/copyright/gpl/COPYING: `Gnomovision' (which makes passes at compilers) written by James Hacker. dhcp-server/src/DhcpServer.pm: # FIXME temporary hack because of testsuite dns-server/src/DnsZones.pm:# This function is a light hack fo NSUPDATE. dns-server/src/DnsZones.pm:# This light hack is here because nsupdate needs at least one NS record working for it's updates dns-server/src/DnsFakeTabs.ycp:// Dirty hack for tabs in YCP until the widget implementation is ready firewall/src/dialogs.ycp: // hack function for disabling BackButon firstboot/configure.in.in:## Nasty hack: xgettext doesn't work for XML files, so let's symlink it ftp-server/src/dialogs.ycp: * special hack widget where is handlig disable back button ftp-server/src/dialogs.ycp: * special hack widget where is handlig Start/Stop button gtk/src/ygtkcellrendererarrow.c: // a bit ugly, but let's use a cycle here to avoid calling a function gtk/src/YGPackageSelector.cc: // the plain list; hacky anyway gtk/src/YGPackageSelector.cc: // select path, so the buttons get updated and all (hacky) gtk/src/ygtksteps.c: // ugly -- should use gtk_widget_queue_draw_area (widget, x, y, w, h) gtk/src/ygtksteps.h: TODO: the PangoLayout usage is getting a bit hacky. We may want to gtk/src/YGUtils.cc: // (if you think this is ugly, just wait for the Perl version! :P) gtk/TODO: We could hack this through if we had stock images support (may depend gtk/README: A code overview is given on the HACKING file. gtk/configure.in:Hello hacker: please read the README carefully while this builds. gtk/test.sh:echo "Hackish script to run a ton of yast2-gtk test that we know" gtk/HACKING: hackish. Attempts at abstracting this were successful, but not gtk/configure.in.in:Hello hacker: please read the README carefully while this builds. gtk/integrate/yast2: # FIXME: why the hack was this done? full screening something that http-server/src/YaPI/HTTPDModules.pm: { option => "XBitHack", "context" => [ "Directory", "Server", "Virtual" ], http-server/src/YaST/httpdUtils.pm: # this is a hack. inetd/src/routines.ycp: // HACK: inetd/src/dialogs.ycp: * BTW: This module should have been rewritten ages ago! No more hacking, please. installation/configure.in:#argh hack installation/configure.in.in:## Nasty hack: xgettext doesn't work for XML files, so let's symlink it installation/configure.in.in:#argh hack instserver/src/Instserver.ycp: // HACK: support sles8 too ipsec/src/FreeSwanCerts.pm:# Quick and dirty hack to substitute some known fields of issuer DN to so kerberos-server/src/KerberosServer.pm: if (!SCR->Write (".ldapserver.krb5ACLHack", "" )) ldap/src/LdapServerAccess.pm:BEGIN {$TYPEINFO{AddSambaACLHack} = ["function", ldap/src/LdapServerAccess.pm:sub AddSambaACLHack { ldap/src/LdapServerAccess.pm: if (!SCR->Write (".ldapserver.sambaACLHack", $dn)) { ldap-client/src/Ldap.ycp: // this is a hack ldap-client/src/Ldap.ycp: // this is a hack ldap-server/src/ldap-server_proposal.ycp: /* XXX: hack to resolve bug #44335: ldap-server/agents/ag_ldapserver:# - lots of those ugly direct data accesses (like $section->{$opt_name}->[0]{dataref}{__internal}{filename} ) ldap-server/agents/ag_ldapserver: if( $path[0] eq 'sambaACLHack' ) { ldap-server/agents/ag_ldapserver: summary => "DN missing in sambaACLHack", ldap-server/agents/ag_ldapserver: return $class->sambaACLHack( $dn ); ldap-server/agents/ag_ldapserver: if( $path[0] eq 'krb5ACLHack' ) { ldap-server/agents/ag_ldapserver: #summary => "DN missing in krb5ACLHack", ldap-server/agents/ag_ldapserver: return $class->krb5ACLHack( $dn ); ldap-server/agents/ag_ldapserver: #FIXME: extremely ugly check to determine if the database entry is the one from slapd.conf.default ldap-server/agents/ag_ldapserver:sub krb5ACLHack ldap-server/agents/ag_ldapserver: y2debug("-> krb5ACLHack"); ldap-server/agents/ag_ldapserver: my $acl = "## Yast2 krb5 hack ACL\n"; ldap-server/agents/ag_ldapserver: $acl .= "## Yast2 krb5 hack ACL done\n"; ldap-server/agents/ag_ldapserver: # kick out old krb5 hack ACLs ldap-server/agents/ag_ldapserver: next unless( $slapd[$i] =~ /^## Yast2 krb5 hack ACL/ ); ldap-server/agents/ag_ldapserver: } while( $slapd[++$i] !~ /^## Yast2 krb5 hack ACL done/ ); ldap-server/agents/ag_ldapserver:sub sambaACLHack { ldap-server/agents/ag_ldapserver: y2debug("-> sambaACLHack"); ldap-server/agents/ag_ldapserver: my $acl = "## Yast2 samba hack ACL\n"; ldap-server/agents/ag_ldapserver: $acl .= "## Yast2 samba hack ACL done\n"; ldap-server/agents/ag_ldapserver: # kick out old samba hack ACLs ldap-server/agents/ag_ldapserver: next unless( $slapd[$i] =~ /^## Yast2 samba hack ACL/ ); ldap-server/agents/ag_ldapserver: } while( $slapd[++$i] !~ /^## Yast2 samba hack ACL done/ ); liby2util/src/.deps/digest_bin-Digest.Po: /usr/include/openssl/e_os2.h /usr/include/openssl/symhacks.h \ liby2util/src/.deps/digest_bin-Digest.Po:/usr/include/openssl/symhacks.h: liby2util/src/.deps/Digest.Plo: /usr/include/openssl/e_os2.h /usr/include/openssl/symhacks.h \ liby2util/src/.deps/Digest.Plo:/usr/include/openssl/symhacks.h: live-installer/src/live-installer.ycp: // FIXME hack because of bootloader - libzypp does not contain product database live-installer/configure.in.in:## Nasty hack: xgettext doesn't work for XML files, so let's symlink it mail/users-plugin/UsersPluginMail.pm: # UGLY: Access the Namespace-Structure directly, as the access method lowercase the values make.log:./../../src/inst_you.ycp: 50: Warning: Function Hack has no comment. metapackage/COPYING: `Gnomovision' (which makes passes at compilers) written by James Hacker. ncurses/src/ncursesw.h:/* The (char*) cast is to hack around missing const's */ ncurses/src/ncursesw.h:/* The (wchar*_t) cast is to hack around missing const's */ network/src/dsl/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/lan/address.ycp: // The combo is a hack to allow changing misdetected network/src/modem/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/installation/inst_do_net_test.ycp: // ugly hack (see bug #42177) network/src/installation/network/dsl/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/installation/network/lan/address.ycp: // The combo is a hack to allow changing misdetected network/src/installation/network/modem/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/installation/network/provider/dialogs.ycp: * The SelectionBox "----" divider hack network/src/installation/network/provider/dialogs.ycp:define any dividerHack(list provs, any prev) { network/src/installation/network/provider/dialogs.ycp: provider = dividerHack(provs, prev); network/src/modules/Lan.ycp: // if(!Arch::s390 ()) /* FIXME: Temporary hack until the detection is functional */ network/src/modules/network/dsl/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/modules/network/lan/address.ycp: // The combo is a hack to allow changing misdetected network/src/modules/network/modem/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/modules/network/installation/inst_do_net_test.ycp: // ugly hack (see bug #42177) network/src/modules/network/provider/dialogs.ycp: * The SelectionBox "----" divider hack network/src/modules/network/provider/dialogs.ycp:define any dividerHack(list provs, any prev) { network/src/modules/network/provider/dialogs.ycp: provider = dividerHack(provs, prev); network/src/routines/dsl/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/routines/lan/address.ycp: // The combo is a hack to allow changing misdetected network/src/routines/modem/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/routines/installation/inst_do_net_test.ycp: // ugly hack (see bug #42177) network/src/routines/provider/dialogs.ycp: * The SelectionBox "----" divider hack network/src/routines/provider/dialogs.ycp:define any dividerHack(list provs, any prev) { network/src/routines/provider/dialogs.ycp: provider = dividerHack(provs, prev); network/src/provider/dialogs.ycp: * The SelectionBox "----" divider hack network/src/provider/dialogs.ycp:define any dividerHack(list provs, any prev) { network/src/provider/dialogs.ycp: provider = dividerHack(provs, prev); network/src/clients/network/dsl/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/clients/network/lan/address.ycp: // The combo is a hack to allow changing misdetected network/src/clients/network/modem/dialogs.ycp: // 0 is index to CreateWidgets... ugly network/src/clients/network/installation/inst_do_net_test.ycp: // ugly hack (see bug #42177) network/src/clients/network/provider/dialogs.ycp: * The SelectionBox "----" divider hack network/src/clients/network/provider/dialogs.ycp:define any dividerHack(list provs, any prev) { network/src/clients/network/provider/dialogs.ycp: provider = dividerHack(provs, prev); nis-client/agents/ag_yp_conf: # a hack to make testing simple nis-client/agents/ag_yp_conf: # a hack to make testing simple ntp-client/src/misc.ycp:// FIXME this is quite ugly ... the whole checkinf if something was changed online-update/src/inst_you.ycp: // I have a feeling that we may need a lot of hacks here online-update/src/inst_you.ycp: boolean Hack (string what) { online-update/src/inst_you.ycp: boolean hack = (SCR::Read (.target.size, "/tmp/hack-" + what) != -1); online-update/src/inst_you.ycp: if (hack) online-update/src/inst_you.ycp: y2milestone ("HACK: %1", what); online-update/src/inst_you.ycp: return hack; online-update/src/inst_you.ycp: if (after_restart || Hack ("init-target-and-sources")) online-update/src/inst_you.ycp: Hack ("ui")) online-update/yast2-online-update.spec.in: # remove the.desktop from the older unhacked package during update packagemanager/src/inst/rpm/librpmDb.cv3.cc: /* HACK. Source RPM, so just do things differently */ packagemanager/src/inst/InstSrc.cc:// DESCRIPTION : Hack for adrian to enforce package packagemanager/src/inst/InstSrc.cc: rememberPreviouslyDnlPackage( path_r ); // Hack not to keep more than one downloaded package packagemanager/src/inst/InstSrc.cc:#warning Hack not to keep more than one downloaded package packagemanager/src/inst/InstSrcDataUL.cc: // slideshow via ftp/http hack packagemanager/src/inst/InstSrcManager.cc:#warning be friendly to slideshow hack packagemanager/src/y2pm/InstTarget.h: * Hack to let InstTarget lookup required and conflicting file relations. packagemanager/src/y2pm/RpmDb.h: * Hack to lookup required and conflicting file relations. packagemanager/src/y2pm/PMSolvable.h: * Hack to let InstTarget lookup required and conflicting file relations. packagemanager/src/PMManager_solver.cc:#warning hack for unknown file dependencies packager/src/clients/inst_kickoff.ycp: // hack 'pre-req' cyclic dependency between bash, aaa_base, and perl packager/src/clients/inst_kickoff.ycp: // hack 'pre-req' cyclic dependency between bash, aaa_base, and perl packager/configure.in.in:## Nasty hack: xgettext doesn't work for XML files, so let's symlink it pam/src/PamSettings.ycp: // FIXME temporary hack for backward compatibility perl-bindings/doc/examples/Makefile.am.common:# this is a hacked up version of the thing that is in newer devtools perl-bindings/src/YCP.cc: // this is a hack before the builtin namespaces get a uniform interface: perl-bindings/src/YCP.cc: // maybe a special exceptional hack to make Path for the 1st argument? perl-bindings/src/YCP.pm: # HACK: pkg-bindings/src/Source.cc:// hack: zypp/MediaProducts.h cannot be included in PkgModuleFunctions.h pkg-bindings/src/Source.cc: * (idempotence hack, broken design: #155459, #176013, use SourceSaveAll). printer/agent-ppd/src/PPDdb.cc: /* Add special vendors hacks */ printer/agent-ppd/src/PPDdb.cc: * Preprocess the strings, apply hacks and update the db. printer/agent-ppd/src/PPDdb.cc: /* special vendor/printer hacks */ product-creator/src/Kiwi.ycp: string cmd = sformat ("ZYPP_READONLY_HACK=1 kiwi --root %1 --prepare %2 --logfile terminal", chroot_dir, config_dir); product-creator/src/Kiwi.ycp: cmd = sformat ("ZYPP_READONLY_HACK=1 kiwi --create %1 -d %2 --logfile terminal", chroot_dir, out_dir); profile-manager/src/ProfileManager.ycp: if (position == "first") // hack: missing newline qt/src/pkg/YQPkgConflictDialog.cc: // Here comes a real nasty hack. qt/src/pkg/YQPkgPatternList.h: * be set >0 and rootItemDecorated( true ), but that would look very ugly qt/src/YQUI_core.cc: // Ugly hack as a workaround of bug #121872 (Segfault at program exit qt/src/YQCheckBoxFrame.h: * This is a nasty hack, but it prevents oversights from the Qt designers. qt/src/YQCheckBoxFrame.cc: * This is a nasty hack. But it is necessary because QGroupBox handles its qt/src/YQMenuButton.cc: * the 100 delay is a ugly dirty workaround registration/src/clients/inst_suse_register.ycp:chacl * -x maptimeout,markkeys,maxwin,meta,monitor,msgminwait,msgwait,multiuser,nethack,next,nonblock repair/doc/Research/Rescue/research/results/misc/wrong_library_path.html:never heard of this library (have you been hacked?). Do you have it? repair/doc/Research/Rescue/research/results/misc/wrong_library_path.html:> never heard of this library (have you been hacked?). Do you have it? repair/doc/Research/Rescue/research/results/login/index.html: Reply