]> mj.ucw.cz Git - pciids.git/commitdiff
Check a sub-system vendor exists
authorMichal Vaner <vorner@ucw.cz>
Sat, 30 Aug 2008 18:42:52 +0000 (20:42 +0200)
committerMichal Vaner <vorner@ucw.cz>
Sat, 30 Aug 2008 18:42:52 +0000 (20:42 +0200)
PciIds/Address/Base.pm
PciIds/Address/Pci.pm
PciIds/DBQ.pm
PciIds/Html/Changes.pm

index 1ec3cb80706af6184ac851d3443a99c36fdafb9e..ad5f6f874af02012ea523182c92d7b558855e3f1 100644 (file)
@@ -49,4 +49,8 @@ sub helpName( $ ) {
        return undef;
 }
 
+sub addressDeps( $ ) {
+       return [];
+}
+
 1;
index c9b3a16b6cf6f45cf37126b002abf904aba112d7..bf53d7a4513245d12c1fcde0c858610ba058b3bf 100644 (file)
@@ -18,7 +18,7 @@ sub pretty( $ ) {
        s/([0-9a-f]{4})([0-9a-f]{4})/$1 $2/g;
        my $prefix = '';
        if( /:.*:/ ) {
-               $prefix = 'Subsystem';
+               $prefix = 'Sub-system';
        } elsif( /:/ ) {
                $prefix = 'Device';
        } else {
@@ -64,4 +64,10 @@ sub helpName( $ ) {
        return 'pci';
 }
 
+sub addressDeps( $ ) {
+       my( $addr ) = ( shift->get() =~ /^PC\/....\/....\/(....)/ );
+       return [] unless defined $addr;
+       return [ [ PciIds::Address::new( "PC/$addr" ), "Sub-system vendor $addr does not exist" ] ];
+}
+
 1;
index b671ea26eef4fe01caf8b22c159553bfe23d676f..e3932f128a69eee92e2a9b94621446456b63bc82 100644 (file)
@@ -184,11 +184,14 @@ sub history( $$ ) {
 sub submitItem( $$$ ) {
        my( $self, $data, $auth ) = @_;
        my( $addr ) = ( $data->{'address'} );
+       foreach( @{$addr->addressDeps()} ) {
+               my( $dep, $error ) = @{$_};
+               return ( $error, undef ) unless defined $self->item( $dep->get(), 0 );
+       }
        return( 'exists', undef ) if( defined( $self->item( $addr->get(), 0 ) ) );
        eval {
                $self->command( 'newitem', [ $addr->get(), $addr->parent()->get() ] );
                $self->command( 'newhistory', [ $addr->get(), $auth->{'authid'}, $data->{'discussion'}, $data->{'name'}, $data->{'note'} ] );
-
        };
        if( $@ ) {
                $self->rollback();
index c03af9e046b1c35d7d88cf6efbd35f5c5f398943..bd721ea4f48acc646d718587b90f48909802c24b 100644 (file)
@@ -72,7 +72,7 @@ sub newItemSubmit( $$$$ ) {
                        genHtmlTail();
                        return OK;
                } elsif( $result ) {
-                       die "Failed to submit new item: $result\n";
+                       return genNewItemForm( $req, $args, $auth, $tables, $result, $data );
                }
                notify( $tables, $data->{'address'}->get(), $comName, 2, 0 );
                tulog( $auth->{'authid'}, "Item created ".$data->{'address'}->get()." ".logEscape( $data->{'name'} )." ".logEscape( $data->{'note'} )." ".logEscape( $data->{'discussion'} )." $comName" );