func: void RollbackToSavepoint(List *options) TransactionState s = CurrentTransactionState ; TransactionState target ; ListCell * cell ; char * name = ( ( void * ) 0 ) ; for (cell = list_head(options); cell != ((void *)0); cell = cell -> next) DefElem * elem = cell -> data . ptr_value ; if ( strcmp ( ( elem -> defname ) , "savepoint_name" ) == 0 )  name = ( ( Value * ) ( elem -> arg ) ) -> val . str; for (target = s; ((const void *)target) != ((void *)0); target = target -> parent) if ( ( ( const void * ) ( target -> name ) ) != ( ( void * ) 0 ) && strcmp ( ( target -> name ) , name ) == 0 )  