Content-type: text/html Man page of mgdiff

mgdiff

Section: (1X)
Updated:
Index Return to Main Contents
 

NAME

mgdiff - Motif-based graphical file difference browser  

SYNOPSIS

mgdiff [-toolkitoption...] [-quit] [-file name] [-args diffargs] [file1 file2]


 

OPTIONS

These are the standard options accepted by all applications that use the X Toolkit Intrinsics. See the OPTIONS section in the X(1X) manual page. This option sets the resource Mgdiff.quitIfSame to "true". This will cause the program to exit immediately without bringing up a window if the two files have no differences (as determined by the diff command). This option sets the resource Mgdiff.diffArgs to the value of the diffargs argument. These options are passed to the diff command that actually computes the differences between the two files. Since any argument can be passed, it is possible to specify options that cause the diff command to fail or to generate output in a different format that will cause mgdiff to fail. For most versions of diff, only three options make any sense. The first is '-b'; this causes diff to ignore trailing blanks (spaces and tabs) and to treat all other strings of blanks as equivalent. The second option is '-w'; this ignores blanks and treats strings of blanks as equivalent. The last option is '-i'; this ignores case when comparing letters. This command sets the resource Mgdiff.filename to the value of the name argument. mgdiff uses this string to display over a file read from standard input.
 

DESCRIPTION

Mgdiff is a graphical front end to the diff command. It permits the user to view the differences between two ASCII files in context and, optionally, to write out a third file which is the user-defined merging of those two files. It is inspired by a similar program, called gdiff, which runs only on Silicon Graphics workstations and for which source code is not provided.

The program takes as arguments various options (described in the next section) and the names of two files to compare. Either filename (but not both) may be given as '-' to use standard input instead.

The resulting display consists mostly of two panes of text; the one on the left is the first file specified and the one on the right is the second file specified. Between and below the text panes are scrollbars that permit changing the visible portions of the two files being compared. In addition, the program implements the Scrolled Region recommendations of Section 2.3.4 of the OSF/Motif Style Guide (release 1.1), meaning that the arrow and paging keys will work to scroll as well. Above each text pane is the name of the file in that text pane and the line number in the file which is being displayed.

The text in each of the text panes is divided into blocks of lines which are color-coded with one of five different colors. This indicates that the block:

        differs between the two files

        is identical between the two files

        has been inserted in one file or the other

        is for display purposes (to match an inserted block in the
        other file)

        has been selected by the user (for writing to a merged file)

These colors can be modified by the user via X resources; see the RESOURCES section of this manual page. A legend display of the colors and their meanings is available using the Help menu.

On the right-hand side of the display is an overview area; this shows the files in their entirety. The sliders in the overview area track the lines being displayed in the text panes.

At the top of the display is a Motif menu bar; those functions are discussed in the MENUS section of this manual page.
 

MENUS

The menubar contains the following menu topics as CascadeButtons: File, View, Select, Options and Help. The rest of this section discusses each menu entry, showing it's name and accelerator, if any.

File

This pulldown menu controls file access:

Open... Ctrl+O

Brings up the "Open Files" FileSelectionDialog to allow the user to open two files for comparison.

Open Left... Ctrl+L

Brings up the "Open File" FileSelectionDialog to allow the user to specify a file to open and compare with the already opened right-hand file.

Open Right... Ctrl+R

Brings up the "Open File" FileSelectionDialog to allow the user to specify a file to open and compare with the already opened left-hand file.

Save As... Ctrl+S

Brings up the "Save File" FileSelectionDialog to allow the user to specify an output file for writing the merged file; this is an application modal dialog. The program will allow the user to overwrite an existing file but pops up a QuestionDialog to allow the user to cancel the operation if desired. If there are any unselected areas of difference between the two files the user is notified via an ErrorDialog and the save operation is canceled.

Exit Ctrl+C

Exits the program immediately.

View

This pulldown menu contains commands for moving through the files.

Previous Ctrl+P

Scrolls both file views so that the previous area of difference is Mgdiff.linesOfContext lines from the top of the application window.

Next Ctrl+N

Scrolls both file views so that the next area of difference is Mgdiff.linesOfContext lines from the top of the application window.

Next Unselected Ctrl+U

Scrolls both file views so that the next unselected area of difference is Mgdiff.linesOfContext lines from the top of the application window.

Select

The two files being compared can be optionally merged into one file. To do this, the user must select for each area of difference between the two files which version should be written to the merged file. The menu entries in this pulldown menu allow the user to select or unselect differences in groups rather than individually.

Left All

For all areas of difference between the two files select the left-hand file version.

Right All

For all areas of difference between the two files select the right-hand file version.

Unselect All

Unselects all areas of difference in both files.

Options

This pulldown menu controls miscellaneous appearance and/or behavior options.

Overview Ctrl+W

This menu entry toggles the presence of the overview area on the right-hand side of the application window. The default value for this toggle is controlled by a resource, Mgdiff.overview, which is described in the RESOURCES section.

Horizontal Scrollbar Ctrl+H

This menu entry toggles the presence of the horizontal scrollbar at the bottom of the application window. The default value for this toggle is controlled by a resource, Mgdiff.horzScrollbar, which is described in the RESOURCES section.

Drag Scroll Ctrl+D

This menu entry toggles the behaviour of the scrollbars in the application window. When set, dragging the slider of a scrollbar results in a immediate change in the view of the text being compared. When unset, the view is only changed at the end of a slider drag (when the mouse button is released.) This setting might be preferred on a slower X server. The default value for this toggle is controlled by a resource, Mgdiff.dragScroll, which is described in the RESOURCES section.

Help

This pulldown menu displays commands for obtaining help on or information about mgdiff.

Version... Ctrl+V

Brings up an InformationDialog with author and version information.

Manual Page... Ctrl+M

Brings up a DialogShell with a ScrolledText widget containing this manual page. The command for generating this is customizable via a resource, Mgdiff.manCommand, which is described in the RESOURCES section.

Color Legend... Ctrl+G

Brings up a DialogShell which summarizes the use of color in encoding the types of differences between the two files being compared.
 

OTHER DISPLAYS/CONTROLS

You can move directly to a particular spot in the two files by using BDrag in the overview area.

The program uses what the OSF/Motif Style Guide calls "multiple selection" to select individual blocks for writing to a merged file. Clicking BSelect on an unselected block adds it to the list of selected blocks. Clicking BSelect on a selected block removes it from the list of selected blocks. In addition, Clicking BSelect on an unselected block which is opposite a selected block (in the other text panes) removes the selected block from the list of selected blocks.

The numbers in the small boxes next to the file names are the line numbers of the lines at the top of the text panes.
 

WIDGETS

What follows is the hierarchy of Motif widgets, as generated by editres(1X). The hierarchical structure of the widget tree is reflected in the indentation. Each line consists of the widget class name followed by the widget instance name. This information might be useful if you wish to customize the appearance of the program via resource settings.

Mgdiff mgdiff
       XmMainWindow  mainw
              XmSeparatorGadget  MainWinSep1
              XmSeparatorGadget  MainWinSep2
              XmSeparatorGadget  MainWinSep3
              XmRowColumn  menubar
                     XmCascadeButtonGadget  button_0
                     XmCascadeButtonGadget  button_1
                     XmCascadeButtonGadget  button_2
                     XmCascadeButtonGadget  button_3
                     XmCascadeButtonGadget  button_4
                     XmMenuShell  popup_file_menu
                            XmRowColumn  select_menu
                                   XmPushButtonGadget  button_0
                                   XmPushButtonGadget  button_1
                                   XmSeparatorGadget  separator_0
                                   XmPushButtonGadget  button_2
                            XmRowColumn  file_menu
                                   XmPushButtonGadget  button_0
                                   XmPushButtonGadget  button_1
                                   XmPushButtonGadget  button_2
                                   XmPushButtonGadget  button_3
                                   XmSeparatorGadget  separator_0
                                   XmPushButtonGadget  button_4
                            XmRowColumn  options_menu
                                   XmToggleButtonGadget  button_0
                                   XmToggleButtonGadget  button_1
                                   XmToggleButtonGadget  button_2
                            XmRowColumn  help_menu
                                   XmPushButtonGadget  button_0
                                   XmPushButtonGadget  button_1
                                   XmPushButtonGadget  button_2
                            XmRowColumn  view_menu
                                   XmPushButtonGadget  button_0
                                   XmPushButtonGadget  button_1
                                   XmPushButtonGadget  button_2
              XmForm  form1
                     XmFrame  frame1
                            XmForm  form3
                                   XmScrollBar  sbl
                                   XmDrawingArea  dam
                                   XmScrollBar  sbr
                     XmFrame  frame2
                            XmForm  form4
                                   XmForm  form2
                                          XmScrollBar  sb
                                          XmForm  form21
                                                 XmFrame  frame3
                                                 XmLabel  fnamel
                                                 XmFrame  frame31
                                                 XmTextField  linenuml
                                          XmForm  form22
                                                 XmFrame  frame4
                                                 XmLabel  fnamer
                                                 XmFrame  frame41
                                                 XmTextField  linenumr
                                          XmDrawingArea  textl
                                          XmDrawingArea  textr
                                   XmScrollBar  sbh
       XmDialogShell  version_popup
              XmMessageBox  version
                     XmLabelGadget  symbol
                     XmLabelGadget
                     XmSeparatorGadget  separator
                     XmPushButtonGadget  OK
                     XmPushButtonGadget  Cancel
                     XmPushButtonGadget  Help
       XmDialogShell  manualpage_popup
              XmForm  manualpage
                     XmPanedWindow  pane
                            XmScrolledWindow  help_textSW
                                   XmScrollBar  vbar
                                   XmText  help_text
                            XmForm  form2a
                                   XmPushButton  OK
                            XmSash  sash
                            XmSeparatorGadget  separator
                            XmSash  sash
                            XmSeparatorGadget  separator
       XmDialogShell  legend_popup
              XmForm  legend
                     XmPanedWindow  pane
                            XmRowColumn  rc
                                   XmLabel  label1
                                   XmLabel  label2
                                   XmLabel  label3
                                   XmLabel  label4
                                   XmLabel  label5
                            XmForm  form2a
                                   XmPushButton  OK
                            XmSash  sash
                            XmSeparatorGadget  separator
                            XmSash  sash
                            XmSeparatorGadget  separator
       XmDialogShell  werror_popup
              XmMessageBox  werror
                     XmLabelGadget  symbol
                     XmLabelGadget
                     XmSeparatorGadget  separator
                     XmPushButtonGadget  OK
                     XmPushButtonGadget  Cancel
                     XmPushButtonGadget  Help


 

X RESOURCES

Mgdiff.diffForeground: black Mgdiff.diffBackground: yellow

These colors are for blocks which differ between files.

Mgdiff.sameForeground: black Mgdiff.sameBackground: grey

These colors are for blocks which are identical between files.

Mgdiff.insertForeground: black Mgdiff.insertBackground: orange

These colors are for blocks which have been inserted in one file.

Mgdiff.blankForeground: black Mgdiff.blankBackground: grey66

These colors are for blocks which are for display purposes.

Mgdiff.selectForeground: black Mgdiff.selectBackground: light slate blue

These colors are for blocks which have been selected by the user.

Mgdiff.font: 7x13bold

Font for displaying text blocks.

Mgdiff.dragScroll: true

Set to true if scrollbar dragging should cause immediate changes in the viewed text, and false if the view should only change after the scrollbar has been moved.

Mgdiff.overview: true

Set to true if the file overview section should appear.

Mgdiff.horzScrollbar: true

Set to true if the horizontal scrollbar should appear.

Mgdiff.linesOfContext: 3

Number of lines that should appear above a difference block gotten to using the Previous or Next commands. Should be greater or equal to zero.

Mgdiff.manCommand: (man mgdiff | col -b) 2>&1

The command (or pipeline) used to produce a formatted manual page without escape codes.

Mgdiff.diffCommand: diff

The diff(1) compatible command to use for calculating differences between text files.

Mgdiff.diffArgs: ""

The arguments to be provided to the diff command. This resource can also be set via the -args command line option.

Mgdiff.quitIfSame: false

If the two files have no differences (as determined by the diff command) then exit immediately without bringing up a window. This resource can also be set to "true" via the -quit command line option.

Mgdiff.filename: (stdin)

mgdiff uses this string to display over a file read from standard input. This resource can also be set via the -file command line option.
 

DIAGNOSTICS

Returns the exit status generated by the diff command. This is usually 0 for no differences, 1 for some differences and 2 for errors.
 

RESTRICTIONS

Using BDrag in the overview area doesn't work well when drag scrolling is turned off.

Doesn't support monochrome displays.

Input lines longer than BUFSIZ (see /usr/include/stdio.h) are silently truncated.

The code for parsing and passing arguments to the diff command assumes arguments are delimited by white space and does not do any quote processing.
 

COPYRIGHT

Copyright (c) 1994, Daniel Williams

See X(1X) for a full statement of rights and permissions.
 

SEE ALSO

diff(1), X(1X)
 

AUTHOR

Daniel Williams ([email protected])
 

ACKNOWLEDGEMENTS

To Andrew C. Myers for writing gdiff.


 

Index

NAME
SYNOPSIS
OPTIONS
DESCRIPTION
MENUS
OTHER DISPLAYS/CONTROLS
WIDGETS
X RESOURCES
DIAGNOSTICS
RESTRICTIONS
COPYRIGHT
SEE ALSO
AUTHOR
ACKNOWLEDGEMENTS

This document was created by man2html, using the manual pages.
Time: 02:43:05 GMT, October 02, 2010