[rt-devel] [patch] rt CLI broken with command line add/del (also bug: reading
/etc/rf.conf?)
Iain Price
iain.price at post.serco.com
Wed Oct 15 10:36:12 EDT 2003
Hi again,
Usual disclaimers, i could have barked up a wrong tree or something but...
It seems the RT CLI program, when it compiles the form parameters for
posting to RT has two paths, one with an existing form, one without.
The one without naturally only does 'set' operations (since there is no
server side add/del, only set, the CLI must return the complete list not
just the mods). However if you specify a command line add/del that is
'sufficient' not to require editing, then this path is taken and the
add/del is silently ignored.
My patch checkes earlier on in the code to see if add/del contain
values, and if so enforces the download of the form from the server, the
other path for doing creating the post is used, which supports add and
del as well as set. This has no side effects on the process (doesn't
cause edit or anything), well ok it makes it a touch slower, and makes
it work as it should. Usual caveats about the RT command line help
syntax being out of date, supported modes appear to be 'add <attribute>
<value> <attribute> <value>' etc or 'set attribute+=value'. There has
been a previous (contrib?) patch on this forum to fix some other bugs in
the documentation, this might be one of them.
Oh, the thing that should read /etc/rf.conf breaks real bad for me, so
i'm using java's environment control instead, could be something wierd
in my setup perhaps?
Modification of a read-only value attempted at /opt/rt3/bin/rt line 1100.
1094-
1095-# Makes a hash of the specified configuration file.
1096-sub parse_config_file {
1097- my %cfg;
1098- my ($file) = @_;
1099: open (CFG, $file) && do {
1100: while (<CFG>) {
1101- chomp;
1102- next if (/^#/ || /^\s*$/);
1103-
1104- if (/^(user|passwd|server)\s+([^ ]+)$/) {
1105- $cfg{$1} = $2;
What i dont like is i have no idea why that happens :P looks like a
slightly more 'perl-fluent' version of code i've written a thousand
times before but i've not investigated too much, after jumbling the
syntax a little and still getting nowhere i gave up and moved to
environment variables so i dont really have anything useful to say :P
Oh final whine, i think my mysql cache is nasty and gets dirty, its not
invalidated on writes to the tables or something, i've seen select
statements pull up data i know is old, then miraculously a second later
the same query gives different (correct) results :| So much for locking
the table to ensure everyone is in sync heh. No doubt i need another
upgrade or something,
Iain
*** /tmp/rt 2003-10-15 15:15:31.000000000 +0100
--- /opt/rt3/bin/rt 2003-10-15 15:18:12.000000000 +0100
*************** sub edit {
*** 271,276 ****
--- 271,277 ----
%set = %add = %del = ();
my $slurped = 0;
my $bad = 0;
+ my $forceformget = 0;
while (@ARGV) {
$_ = shift @ARGV;
*************** sub edit {
*** 363,373 ****
# user doesn't want to edit the form by hand, and the command line
# specifies only simple variable assignments.
if ($input) {
local $/ = undef;
$text = <STDIN>;
}
! elsif ($edit || !$cl) {
my $r = submit("$REST/show", { id => \@objects, format => 'l' });
$text = $r->content;
}
--- 364,379 ----
# user doesn't want to edit the form by hand, and the command line
# specifies only simple variable assignments.
+ if (defined(%add) or defined(%del))
+ {
+ #IJP 15/08/2003 : if we are adding or deleting values from
the form then we better get a copy of it from the server, regardless of
command line parameters etc
+ $forceformget=1;
+ }
if ($input) {
local $/ = undef;
$text = <STDIN>;
}
! elsif ($edit || !$cl || $forceformget) {
my $r = submit("$REST/show", { id => \@objects, format => 'l' });
$text = $r->content;
}
More information about the Rt-devel
mailing list