Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ivan Ivlev
bugzilla
Commits
d8000a59
Commit
d8000a59
authored
Aug 18, 2005
by
mkanat%kerio.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 299848: enter_bug's automatic OS/Platform code does not work with the new default OS list
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=wurblzap, a=justdave
parent
74dd48c2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
132 additions
and
80 deletions
+132
-80
Config.pm
Bugzilla/Config.pm
+1
-1
checksetup.pl
checksetup.pl
+20
-0
enter_bug.cgi
enter_bug.cgi
+111
-79
No files found.
Bugzilla/Config.pm
View file @
d8000a59
...
...
@@ -204,7 +204,7 @@ sub UpdateParams {
$param
{
'defaultplatform'
}
=
'Other'
;
}
if
(
!
exists
$param
{
'defaultopsys'
})
{
$param
{
'defaultopsys'
}
=
'
o
ther'
;
$param
{
'defaultopsys'
}
=
'
O
ther'
;
}
}
delete
$param
{
'usebrowserinfo'
};
...
...
checksetup.pl
View file @
d8000a59
...
...
@@ -3991,6 +3991,26 @@ if (!exists $dbh->bz_column_info('milestones', 'sortkey')->{DEFAULT}) {
# when all bug fields have been correctly set.
$dbh
->
bz_alter_column
(
'bugs'
,
'creation_ts'
,
{
TYPE
=>
'DATETIME'
});
# Old Bugzillas have "other" as an OS choice, new ones have "Other"
# (capital O).
# XXX - This should be moved inside of a later schema change, once
# we have one to move it to the inside of.
print
"Setting any 'other' op_sys to 'Other'...\n"
;
$dbh
->
do
(
'UPDATE op_sys SET value = ? WHERE value = ?'
,
undef
,
"Other"
,
"other"
);
$dbh
->
do
(
'UPDATE bugs SET op_sys = ? WHERE op_sys = ?'
,
undef
,
"Other"
,
"other"
);
if
(
Param
(
'defaultopsys'
)
eq
'other'
)
{
# We can't actually fix the param here, because WriteParams() will
# make $datadir/params unwriteable to the webservergroup.
# It's too much of an ugly hack to copy the permission-fixing code
# down to here. (It would create more potential future bugs than
# it would solve problems.)
print
"WARNING: Your 'defaultopsys' param is set to 'other', but"
.
" Bugzilla now\n"
.
" uses 'Other' (capital O).\n"
;
}
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.
#
...
...
enter_bug.cgi
View file @
d8000a59
...
...
@@ -161,118 +161,150 @@ sub formvalue {
return
$cgi
->
param
(
$name
)
||
$default
||
""
;
}
# Takes the name of a field and a list of possible values for that
# field. Returns the first value in the list that is actually a
# valid value for that field.
# The field should be named after its DB table.
# Returns undef if none of the platforms match.
sub
pick_valid_field_value
(@)
{
my
(
$field
,
@values
)
=
@_
;
my
$dbh
=
Bugzilla
->
dbh
;
foreach
my
$value
(
@values
)
{
return
$value
if
$dbh
->
selectrow_array
(
"SELECT 1 FROM $field WHERE value = ?"
,
undef
,
$value
);
}
return
undef
;
}
sub
pickplatform
{
return
formvalue
(
"rep_platform"
)
if
formvalue
(
"rep_platform"
);
my
@platform
;
if
(
Param
(
'defaultplatform'
))
{
return
Param
(
'defaultplatform'
);
@platform
=
Param
(
'defaultplatform'
);
}
else
{
# If @platform is a list, this function will return the first
# item in the list that is a valid platform choice. If
# no choice is valid, we return "Other".
for
(
$ENV
{
'HTTP_USER_AGENT'
})
{
#PowerPC
/\(.*PowerPC.*\)/i
&&
do
{
return
"Macintosh"
;};
/\(.*PPC.*\)/
&&
do
{
return
"Macintosh"
;};
/\(.*AIX.*\)/
&&
do
{
return
"Macintosh"
;};
/\(.*PowerPC.*\)/i
&&
do
{
@platform
=
"Macintosh"
;
last
;};
/\(.*PPC.*\)/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
/\(.*AIX.*\)/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
#Intel x86
/\(.*[ix0-9]86.*\)/
&&
do
{
return
"PC"
;};
/\(.*[ix0-9]86.*\)/
&&
do
{
@platform
=
"PC"
;
last
;};
#Versions of Windows that only run on Intel x86
/\(.*Win(?:dows )[39M].*\)/
&&
do
{
return
"PC"
;
};
/\(.*Win(?:dows )16.*\)/
&&
do
{
return
"PC"
;};
/\(.*Win(?:dows )[39M].*\)/
&&
do
{
@platform
=
"PC"
;
last
};
/\(.*Win(?:dows )16.*\)/
&&
do
{
@platform
=
"PC"
;
last
;};
#Sparc
/\(.*sparc.*\)/
&&
do
{
return
"Sun"
;};
/\(.*sun4.*\)/
&&
do
{
return
"Sun"
;};
/\(.*sparc.*\)/
&&
do
{
@platform
=
"Sun"
;
last
;};
/\(.*sun4.*\)/
&&
do
{
@platform
=
"Sun"
;
last
;};
#Alpha
/\(.*AXP.*\)/i
&&
do
{
return
"DEC"
;};
/\(.*[ _]Alpha.\D/i
&&
do
{
return
"DEC"
;};
/\(.*[ _]Alpha\)/i
&&
do
{
return
"DEC"
;};
/\(.*AXP.*\)/i
&&
do
{
@platform
=
"DEC"
;
last
;};
/\(.*[ _]Alpha.\D/i
&&
do
{
@platform
=
"DEC"
;
last
;};
/\(.*[ _]Alpha\)/i
&&
do
{
@platform
=
"DEC"
;
last
;};
#MIPS
/\(.*IRIX.*\)/i
&&
do
{
return
"SGI"
;};
/\(.*MIPS.*\)/i
&&
do
{
return
"SGI"
;};
/\(.*IRIX.*\)/i
&&
do
{
@platform
=
"SGI"
;
last
;};
/\(.*MIPS.*\)/i
&&
do
{
@platform
=
"SGI"
;
last
;};
#68k
/\(.*68K.*\)/
&&
do
{
return
"Macintosh"
;};
/\(.*680[x0]0.*\)/
&&
do
{
return
"Macintosh"
;};
/\(.*68K.*\)/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
/\(.*680[x0]0.*\)/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
#HP
/\(.*9000.*\)/
&&
do
{
return
"HP"
;};
/\(.*9000.*\)/
&&
do
{
@platform
=
"HP"
;
last
;};
#ARM
# /\(.*ARM.*\) && do {
return
"ARM";};
# /\(.*ARM.*\) && do {
$platform =
"ARM";};
#Stereotypical and broken
/\(.*Macintosh.*\)/
&&
do
{
return
"Macintosh"
;};
/\(.*Mac OS [89].*\)/
&&
do
{
return
"Macintosh"
;};
/\(Win.*\)/
&&
do
{
return
"PC"
;};
/\(.*Win(?:dows[ -])NT.*\)/
&&
do
{
return
"PC"
;};
/\(.*OSF.*\)/
&&
do
{
return
"DEC"
;};
/\(.*HP-?UX.*\)/i
&&
do
{
return
"HP"
;};
/\(.*IRIX.*\)/i
&&
do
{
return
"SGI"
;};
/\(.*(SunOS|Solaris).*\)/
&&
do
{
return
"Sun"
;};
/\(.*Macintosh.*\)/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
/\(.*Mac OS [89].*\)/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
/\(Win.*\)/
&&
do
{
@platform
=
"PC"
;
last
;};
/\(.*Win(?:dows[ -])NT.*\)/
&&
do
{
@platform
=
"PC"
;
last
;};
/\(.*OSF.*\)/
&&
do
{
@platform
=
"DEC"
;
last
;};
/\(.*HP-?UX.*\)/i
&&
do
{
@platform
=
"HP"
;
last
;};
/\(.*IRIX.*\)/i
&&
do
{
@platform
=
"SGI"
;
last
;};
/\(.*(SunOS|Solaris).*\)/
&&
do
{
@platform
=
"Sun"
;
last
;};
#Braindead old browsers who didn't follow convention:
/Amiga/
&&
do
{
return
"Macintosh"
;};
/WinMosaic/
&&
do
{
return
"PC"
;};
/Amiga/
&&
do
{
@platform
=
"Macintosh"
;
last
;};
/WinMosaic/
&&
do
{
@platform
=
"PC"
;
last
;};
}
return
"Other"
;
}
return
pick_valid_field_value
(
'rep_platform'
,
@platform
)
||
"Other"
;
}
sub
pickos
{
if
(
formvalue
(
'op_sys'
)
ne
""
)
{
return
formvalue
(
'op_sys'
);
}
my
@os
;
if
(
Param
(
'defaultopsys'
))
{
return
Param
(
'defaultopsys'
);
@os
=
Param
(
'defaultopsys'
);
}
else
{
# This function will return the first
# item in @os that is a valid platform choice. If
# no choice is valid, we return "Other".
for
(
$ENV
{
'HTTP_USER_AGENT'
})
{
/\(.*IRIX.*\)/
&&
do
{
return
"IRIX"
;};
/\(.*OSF.*\)/
&&
do
{
return
"OSF/1"
;};
/\(.*Linux.*\)/
&&
do
{
return
"Linux"
;};
/\(.*Solaris.*\)/
&&
do
{
return
"Solaris"
;};
/\(.*SunOS 5.*\)/
&&
do
{
return
"Solaris"
;};
/\(.*SunOS.*sun4u.*\)/
&&
do
{
return
"Solaris"
;};
/\(.*SunOS.*\)/
&&
do
{
return
"SunOS"
;};
/\(.*HP-?UX.*\)/
&&
do
{
return
"HP-UX"
;};
/\(.*BSD\/(?:OS|386).*\)/
&&
do
{
return
"BSDI"
;};
/\(.*FreeBSD.*\)/
&&
do
{
return
"FreeBSD"
;};
/\(.*OpenBSD.*\)/
&&
do
{
return
"OpenBSD"
;};
/\(.*NetBSD.*\)/
&&
do
{
return
"NetBSD"
;};
/\(.*BeOS.*\)/
&&
do
{
return
"BeOS"
;};
/\(.*AIX.*\)/
&&
do
{
return
"AIX"
;};
/\(.*OS\/2.*\)/
&&
do
{
return
"OS/2"
;};
/\(.*QNX.*\)/
&&
do
{
return
"Neutrino"
;};
/\(.*VMS.*\)/
&&
do
{
return
"OpenVMS"
;};
/\(.*Windows XP.*\)/
&&
do
{
return
"Windows XP"
;};
/\(.*Windows NT 5\.2.*\)/
&&
do
{
return
"Windows Server 2003"
;};
/\(.*Windows NT 5\.1.*\)/
&&
do
{
return
"Windows XP"
;};
/\(.*Windows 2000.*\)/
&&
do
{
return
"Windows 2000"
;};
/\(.*Windows NT 5.*\)/
&&
do
{
return
"Windows 2000"
;};
/\(.*Win.*9[8x].*4\.9.*\)/
&&
do
{
return
"Windows ME"
;};
/\(.*Win(?:dows )M[Ee].*\)/
&&
do
{
return
"Windows ME"
;};
/\(.*Win(?:dows )98.*\)/
&&
do
{
return
"Windows 98"
;};
/\(.*Win(?:dows )95.*\)/
&&
do
{
return
"Windows 95"
;};
/\(.*Win(?:dows )16.*\)/
&&
do
{
return
"Windows 3.1"
;};
/\(.*Win(?:dows[ -])NT.*\)/
&&
do
{
return
"Windows NT"
;};
/\(.*Windows.*NT.*\)/
&&
do
{
return
"Windows NT"
;};
/\(.*32bit.*\)/
&&
do
{
return
"Windows 95"
;};
/\(.*16bit.*\)/
&&
do
{
return
"Windows 3.1"
;};
/\(.*Mac OS 9.*\)/
&&
do
{
return
"Mac System 9.x"
;};
/\(.*Mac OS 8\.6.*\)/
&&
do
{
return
"Mac System 8.6"
;};
/\(.*Mac OS 8\.5.*\)/
&&
do
{
return
"Mac System 8.5"
;};
/\(.*IRIX.*\)/
&&
do
{
@os
=
"IRIX"
;
last
;};
/\(.*OSF.*\)/
&&
do
{
@os
=
"OSF/1"
;
last
;};
/\(.*Linux.*\)/
&&
do
{
@os
=
"Linux"
;
last
;};
/\(.*Solaris.*\)/
&&
do
{
@os
=
"Solaris"
;
last
;};
/\(.*SunOS 5.*\)/
&&
do
{
@os
=
"Solaris"
;
last
;};
/\(.*SunOS.*sun4u.*\)/
&&
do
{
@os
=
"Solaris"
;
last
;};
/\(.*SunOS.*\)/
&&
do
{
@os
=
"SunOS"
;
last
;};
/\(.*HP-?UX.*\)/
&&
do
{
@os
=
"HP-UX"
;
last
;};
/\(.*BSD\/(?:OS|386).*\)/
&&
do
{
@os
=
"BSDI"
;
last
;};
/\(.*FreeBSD.*\)/
&&
do
{
@os
=
"FreeBSD"
;
last
;};
/\(.*OpenBSD.*\)/
&&
do
{
@os
=
"OpenBSD"
;
last
;};
/\(.*NetBSD.*\)/
&&
do
{
@os
=
"NetBSD"
;
last
;};
/\(.*BeOS.*\)/
&&
do
{
@os
=
"BeOS"
;
last
;};
/\(.*AIX.*\)/
&&
do
{
@os
=
"AIX"
;
last
;};
/\(.*OS\/2.*\)/
&&
do
{
@os
=
"OS/2"
;
last
;};
/\(.*QNX.*\)/
&&
do
{
@os
=
"Neutrino"
;
last
;};
/\(.*VMS.*\)/
&&
do
{
@os
=
"OpenVMS"
;
last
;};
/\(.*Windows XP.*\)/
&&
do
{
@os
=
"Windows XP"
;
last
;};
/\(.*Windows NT 5\.2.*\)/
&&
do
{
@os
=
"Windows Server 2003"
;
last
;};
/\(.*Windows NT 5\.1.*\)/
&&
do
{
@os
=
"Windows XP"
;
last
;};
/\(.*Windows 2000.*\)/
&&
do
{
@os
=
"Windows 2000"
;
last
;};
/\(.*Windows NT 5.*\)/
&&
do
{
@os
=
"Windows 2000"
;
last
;};
/\(.*Win.*9[8x].*4\.9.*\)/
&&
do
{
@os
=
"Windows ME"
;
last
;};
/\(.*Win(?:dows )M[Ee].*\)/
&&
do
{
@os
=
"Windows ME"
;
last
;};
/\(.*Win(?:dows )98.*\)/
&&
do
{
@os
=
"Windows 98"
;
last
;};
/\(.*Win(?:dows )95.*\)/
&&
do
{
@os
=
"Windows 95"
;
last
;};
/\(.*Win(?:dows )16.*\)/
&&
do
{
@os
=
"Windows 3.1"
;
last
;};
/\(.*Win(?:dows[ -])NT.*\)/
&&
do
{
@os
=
"Windows NT"
;
last
;};
/\(.*Windows.*NT.*\)/
&&
do
{
@os
=
"Windows NT"
;
last
;};
/\(.*32bit.*\)/
&&
do
{
@os
=
"Windows 95"
;
last
;};
/\(.*16bit.*\)/
&&
do
{
@os
=
"Windows 3.1"
;
last
;};
/\(.*Mac OS 9.*\)/
&&
do
{
@os
=
"Mac System 9.x"
;
last
;};
/\(.*Mac OS 8\.6.*\)/
&&
do
{
@os
=
"Mac System 8.6"
;
last
;};
/\(.*Mac OS 8\.5.*\)/
&&
do
{
@os
=
"Mac System 8.5"
;
last
;};
# Bugzilla doesn't have an entry for 8.1
/\(.*Mac OS 8\.1.*\)/
&&
do
{
return
"Mac System 8.0"
;};
/\(.*Mac OS 8\.0.*\)/
&&
do
{
return
"Mac System 8.0"
;};
/\(.*Mac OS 8[^.].*\)/
&&
do
{
return
"Mac System 8.0"
;};
/\(.*Mac OS 8.*\)/
&&
do
{
return
"Mac System 8.6"
;};
/\(.*Mac OS X.*\)/
&&
do
{
return
"Mac OS X 10.0"
;};
/\(.*Darwin.*\)/
&&
do
{
return
"Mac OS X 10.0"
;};
/\(.*Mac OS 8\.1.*\)/
&&
do
{
@os
=
"Mac System 8.0"
;
last
;};
/\(.*Mac OS 8\.0.*\)/
&&
do
{
@os
=
"Mac System 8.0"
;
last
;};
/\(.*Mac OS 8[^.].*\)/
&&
do
{
@os
=
"Mac System 8.0"
;
last
;};
/\(.*Mac OS 8.*\)/
&&
do
{
@os
=
"Mac System 8.6"
;
last
;};
/\(.*Mac OS X.*\)/
&&
do
{
@os
=
"Mac OS X 10.0"
;
last
;};
/\(.*Darwin.*\)/
&&
do
{
@os
=
"Mac OS X 10.0"
;
last
;};
# Silly
/\(.*Mac.*PowerPC.*\)/
&&
do
{
return
"Mac System 9.x"
;};
/\(.*Mac.*PPC.*\)/
&&
do
{
return
"Mac System 9.x"
;};
/\(.*Mac.*68k.*\)/
&&
do
{
return
"Mac System 8.0"
;};
/\(.*Mac.*PowerPC.*\)/
&&
do
{
@os
=
"Mac System 9.x"
;
last
;};
/\(.*Mac.*PPC.*\)/
&&
do
{
@os
=
"Mac System 9.x"
;
last
;};
/\(.*Mac.*68k.*\)/
&&
do
{
@os
=
"Mac System 8.0"
;
last
;};
# Evil
/Amiga/i
&&
do
{
return
"other"
;};
/WinMosaic/
&&
do
{
return
"Windows 95"
;};
/\(.*PowerPC.*\)/
&&
do
{
return
"Mac System 9.x"
;};
/\(.*PPC.*\)/
&&
do
{
return
"Mac System 9.x"
;};
/\(.*68K.*\)/
&&
do
{
return
"Mac System 8.0"
;};
/Amiga/i
&&
do
{
@os
=
"Other"
;
last
;};
/WinMosaic/
&&
do
{
@os
=
"Windows 95"
;
last
;};
/\(.*PowerPC.*\)/
&&
do
{
@os
=
"Mac System 9.x"
;
last
;};
/\(.*PPC.*\)/
&&
do
{
@os
=
"Mac System 9.x"
;
last
;};
/\(.*68K.*\)/
&&
do
{
@os
=
"Mac System 8.0"
;
last
;};
}
return
"other"
;
}
push
(
@os
,
"Windows"
)
if
grep
(
/^Windows /
,
@os
);
push
(
@os
,
"Mac OS"
)
if
grep
(
/^Mac /
,
@os
);
return
pick_valid_field_value
(
'op_sys'
,
@os
)
||
"Other"
;
}
##############################################################################
# End of subroutines
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment