unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



mgdiff(1X)							   mgdiff(1X)
X11R6									X11R6



NAME

  mgdiff - Motif-based graphical file difference browser

SYNOPSIS

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

OPTIONS

  -toolkitoption
      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.

  -quit
      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).

  -args	diffargs
      This option sets the resource Mgdiff.diffArgs to the value of the	dif-
      fargs 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.

  -file	name
      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	sec-
  tion)	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	per-
  mit 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 dis-
  cussed 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	con-
  trolled 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 immedi-
  ate 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 process-
  ing.








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 (danATsass.com)

ACKNOWLEDGEMENTS

  To Andrew C. Myers for writing gdiff.