commit ff18e18c878d0040bc1e4ce254b93e8eb1149dc5
Author: Wolfgang Richter <wo...@cs.cmu.edu>
Date: Sun Apr 10 16:16:08 2011 -0400
Paper skeleton work.
diff --git a/socc2011/Makefile b/socc2011/Makefile
new file mode 100644
index 0000000..79ccf27
--- /dev/null
+++ b/socc2011/Makefile
@@ -0,0 +1,11 @@
+TARGET=paper
+all: pdf
+
+pdf:
+ GS_OPTIONS=-dPDFSETTINGS=/prepress rubber --pdf -Wrefs -Wmisc paper
+
+clean:
+ rm -f *.aux *.log *.out *.bbl *.blg *~ *.bak $(TARGET).ps $(TARGET).pdf
+
+ps: pdf
+ GS_OPTIONS=-dPDFSETTINGS=/prepress pdftops -level1 $(TARGET).pdf
diff --git a/socc2011/README b/socc2011/README
new file mode 100644
index 0000000..0f26ab3
--- /dev/null
+++ b/socc2011/README
@@ -0,0 +1,23 @@
+The supplied Makefile uses a LaTeX build system called rubber,
+which _greatly_ simplifies the build process. The hard way (multiple
+pdflatex/bibtex incantations) will also work. rubber is available at
+
+ http://www.pps.jussieu.fr/~beffara/soft/rubber/
+
+
+To build this paper, you'll want to symlink in the "ref.bib" and "rfc.bib"
+files from dave's biblio repository. You can check those out of the
+subversion repository at
+
+ https://moo.cmcl.cs.cmu.edu/svn/biblio/
+
+A note: The given Makefile tries to ensure that all fonts are embedded.
+You can double-check by running 'pdffonts' on the final paper.pdf or an
+individual figure.
+
+#
+# The skeleton for this paper comes from
+# https://moo.cmcl.cs.cmu.edu/svn/paper_skel
+# When editing paper_skel, please ensure that your changes are
+# clean and apply to future papers in general, not just one
+# specific paper.
diff --git a/socc2011/abbrvnat_noaddr.bst b/socc2011/abbrvnat_noaddr.bst
new file mode 100644
index 0000000..b06fd54
--- /dev/null
+++ b/socc2011/abbrvnat_noaddr.bst
@@ -0,0 +1,1423 @@
+%% File: `abbrvnat.bst'
+%% A modification of `abbrv.bst' for use with natbib package
+%%
+%% Copyright 1993-2005 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: da...@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{natbst.mbs}[2005/01/07 1.8 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ % version 0.99b for BibTeX versions 0.99a or later,
+ % for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ % member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
+ % and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ % authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ % which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ % citation key, to preserve any natural sequence.
+ %
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ eid
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", editors" * }
+ { ", editor" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { new.block "ISBN " isbn * }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { new.block "ISSN " issn * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { new.block "URL \url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { month
+ " " * swap$ *
+ }
+ if$
+ extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pages" pages n.dashify tie.or.space.connect }
+ { "page" pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+ { "" }
+ { "art." eid tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":\penalty0 " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ eid empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.eid }
+ { ":\penalty0 " * eid * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In \emph{" journal * "}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ " \citep{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "\emph{" * series * "}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ 'skip$
+ if$
+ ", \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In \emph{" booktitle * "}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ eid empty$
+ { format.vol.num.pages output }
+ { format.vol.num.eid output }
+ if$
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ eid empty$
+ { format.pages output }
+ { format.eid output }
+ if$
+ }
+ if$
+ format.issn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.date output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.issn output
+ format.url output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ format.url output
+ new.block
+ note "note" output.check
+ format.date output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+
+MACRO {ibmsj} {"IBM Syst.~J."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+
+MACRO {scp} {"Sci. Comput. Programming"}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Gr."}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
+
+MACRO {tcs} {"Theoretical Comput. Sci."}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" * year field.or.null * " " * }
+ 'skip$
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ cite$
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/socc2011/abstract.tex b/socc2011/abstract.tex
new file mode 100644
index 0000000..2de995a
--- /dev/null
+++ b/socc2011/abstract.tex
@@ -0,0 +1,5 @@
+\begin{abstract}
+
+This paper is very abstract
+
+\end{abstract}
diff --git a/socc2011/bibtex.py b/socc2011/bibtex.py
new file mode 100644
index 0000000..dbdc71f
--- /dev/null
+++ b/socc2011/bibtex.py
@@ -0,0 +1,402 @@
+# This file is part of Rubber and thus covered by the GPL
+# (c) Emmanuel Beffara, 2002--2006
+"""
+BibTeX support for Rubber
+
+This module is a special one: it is triggered by the macros \\bibliography and
+\\bibliographystyle and not as a package, so the main system knows about it.
+The module provides the following commands:
+
+ path <dir> = adds <dir> to the search path for databases
+ stylepath <dir> = adds <dir> to the search path for styles
+"""
+
+# Stop python 2.2 from calling "yield" statements syntax errors.
+from __future__ import generators
+
+import os, sys
+from os.path import *
+import re, string
+
+from rubber import _
+from rubber import *
+
+re_bibdata = re.compile(r"\\bibdata{(?P<data>.*)}")
+re_citation = re.compile(r"\\citation{(?P<cite>.*)}")
+re_undef = re.compile("LaTeX Warning: Citation `(?P<cite>.*)' .*undefined.*")
+
+# The regular expression that identifies errors in BibTeX log files is heavily
+# heuristic. The remark is that all error messages end with a text of the form
+# "---line xxx of file yyy" or "---while reading file zzz". The actual error
+# is either the text before the dashes or the text on the previous line.
+
+re_error = re.compile(
+ "---(line (?P<line>[0-9]+) of|while reading) file (?P<file>.*)")
+
+class Module (rubber.rules.latex.Module):
+ """
+ This class is the module that handles BibTeX in Rubber. It provides the
+ funcionality required when compiling documents as well as material to
+ parse blg files for diagnostics.
+ """
+ def __init__ (self, doc, dict, base=None):
+ """
+ Initialize the state of the module and register appropriate functions
+ in the main process. The extra arugment 'base' can be used to specify
+ the base name of the aux file, it defaults to the document name.
+ """
+ self.doc = doc
+ self.env = doc.env
+
+ if base is None:
+ self.base = doc.src_base
+ else:
+ self.base = base
+
+ cwd = self.env.vars["cwd"]
+ self.bib_path = [cwd]
+ if doc.src_path != cwd:
+ self.bib_path.append(doc.src_path)
+ self.bst_path = [cwd]
+
+ self.undef_cites = None
+ self.used_cites = None
+ self.style = None
+ self.set_style("plain")
+ self.db = {}
+ self.sorted = 1
+ self.run_needed = 0
+
+ #
+ # The following method are used to specify the various datafiles that
+ # BibTeX uses.
+ #
+
+ def do_path (self, path):
+ self.bib_path.append(self.doc.abspath(path))
+
+ def do_stylepath (self, path):
+ self.bst_path.append(self.doc.abspath(path))
+
+ def do_sorted (self, mode):
+ self.sorted = mode in ("true", "yes", "1")
+
+ def add_db (self, name):
+ """
+ Register a bibliography database file.
+ """
+ for dir in self.bib_path:
+ bib = join(dir, name + ".bib")
+ if exists(bib):
+ self.db[name] = bib
+ self.doc.sources[bib] = DependLeaf(self.env, bib)
+ self.doc.not_included.append(bib)
+ return
+
+ def set_style (self, style):
+ """
+ Define the bibliography style used. This method is called when
+ \\bibliographystyle is found. If the style file is found in the
+ current directory, it is considered a dependency.
+ """
+ if self.style:
+ old_bst = self.style + ".bst"
+ if exists(old_bst) and self.doc.sources.has_key(old_bst):
+ del self.doc.sources[old_bst]
+
+ self.style = style
+ for dir in self.bst_path:
+ new_bst = join(dir, style + ".bst")
+ if exists(new_bst):
+ self.bst_file = new_bst
+ self.doc.sources[new_bst] = DependLeaf(self.env, new_bst)
+ return
+ self.bst_file = None
+
+ #
+ # The following methods are responsible of detecting when running BibTeX
+ # is needed and actually running it.
+ #
+
+ def pre_compile (self):
+ """
+ Run BibTeX if needed before the first compilation. This function also
+ checks if BibTeX has been run by someone else, and in this case it
+ tells the system that it should recompile the document.
+ """
+ if exists(self.doc.src_base + ".aux"):
+ self.used_cites, self.prev_dbs = self.parse_aux()
+ else:
+ self.prev_dbs = None
+ if self.doc.log.lines:
+ self.undef_cites = self.list_undefs()
+
+ self.run_needed = self.first_run_needed()
+ if self.doc.must_compile:
+ # If a LaTeX compilation is going to happen, it is not necessary
+ # to bother with BibTeX yet.
+ return 0
+ if self.run_needed:
+ return self.run()
+
+ bbl = self.base + ".bbl"
+ if exists(bbl):
+ if getmtime(bbl) > getmtime(self.doc.src_base + ".log"):
+ self.doc.must_compile = 1
+ return 0
+
+ def first_run_needed (self):
+ """
+ The condition is only on the database files' modification dates, but
+ it would be more clever to check if the results have changed.
+ BibTeXing is also needed when the last run of BibTeX failed, and in
+ the very particular case when the style has changed since last
+ compilation.
+ """
+ if not exists(self.base + ".aux"):
+ return 0
+ if not exists(self.base + ".blg"):
+ return 1
+
+ dtime = getmtime(self.base + ".blg")
+ for db in self.db.values():
+ if getmtime(db) > dtime:
+ msg.log(_("bibliography database %s was modified") % db, pkg="bibtex")
+ return 1
+
+ blg = open(self.base + ".blg")
+ for line in blg.readlines():
+ if re_error.search(line):
+ blg.close()
+ msg.log(_("last BibTeXing failed"), pkg="bibtex")
+ return 1
+ blg.close()
+
+ if self.style_changed():
+ return 1
+ if self.bst_file and getmtime(self.bst_file) > dtime:
+ msg.log(_("the bibliography style file was modified"), pkg="bibtex")
+ return 1
+ return 0
+
+ def parse_aux (self):
+ """
+ Parse the aux files and return the list of all defined citations and
+ the list of databases used.
+ """
+ last = 0
+ cites = {}
+ dbs = []
+ for auxname in self.doc.aux_md5.keys():
+ aux = open(auxname)
+ for line in aux.readlines():
+ match = re_citation.match(line)
+ if match:
+ cite = match.group("cite")
+ if not cites.has_key(cite):
+ last = last + 1
+ cites[cite] = last
+ continue
+ match = re_bibdata.match(line)
+ if match:
+ dbs.extend(match.group("data").split(","))
+ aux.close()
+ dbs.sort()
+
+ if self.sorted:
+ list = cites.keys()
+ list.sort()
+ return list, dbs
+ else:
+ list = [(n,c) for (c,n) in cites.items()]
+ list.sort()
+ return [c for (n,c) in list], dbs
+
+ def list_undefs (self):
+ """
+ Return the list of all undefined citations.
+ """
+ cites = {}
+ for line in self.doc.log.lines:
+ match = re_undef.match(line)
+ if match:
+ cites[match.group("cite")] = None
+ list = cites.keys()
+ list.sort()
+ return list
+
+ def post_compile (self):
+ """
+ This method runs BibTeX if needed to solve undefined citations. If it
+ was run, then force a new LaTeX compilation.
+ """
+ if not self.bibtex_needed():
+ msg.log(_("no BibTeXing needed"), pkg="bibtex")
+ return 0
+ return self.run()
+
+ def run (self):
+ """
+ This method actually runs BibTeX with the appropriate environment
+ variables set.
+ """
+ msg.progress(_("running BibTeX on %s") % self.base)
+ doc = {}
+ if len(self.bib_path) != 1:
+ doc["BIBINPUTS"] = string.join(self.bib_path +
+ [os.getenv("BIBINPUTS", "")], ":")
+ if len(self.bst_path) != 1:
+ doc["BSTINPUTS"] = string.join(self.bst_path +
+ [os.getenv("BSTINPUTS", "")], ":")
+ if self.env.execute(["bibtex", "--min-crossrefs=100", self.base], doc):
+ msg.info(_("There were errors making the bibliography."))
+ return 1
+ self.run_needed = 0
+ self.doc.must_compile = 1
+ return 0
+
+ def bibtex_needed (self):
+ """
+ Return true if BibTeX must be run.
+ """
+ if self.run_needed:
+ return 1
+ msg.log(_("checking if BibTeX must be run..."), pkg="bibtex")
+
+ new, dbs = self.parse_aux()
+
+ # If there was a list of used citations, we check if it has
+ # changed. If it has, we have to rerun.
+
+ if self.prev_dbs is not None and self.prev_dbs != dbs:
+ msg.log(_("the set of databases changed"), pkg="bibtex")
+ self.prev_dbs = dbs
+ self.used_cites = new
+ self.undef_cites = self.list_undefs()
+ return 1
+ self.prev_dbs = dbs
+
+ # If there was a list of used citations, we check if it has
+ # changed. If it has, we have to rerun.
+
+ if self.used_cites:
+ if new != self.used_cites:
+ msg.log(_("the list of citations changed"), pkg="bibtex")
+ self.used_cites = new
+ self.undef_cites = self.list_undefs()
+ return 1
+ self.used_cites = new
+
+ # If there was a list of undefined citations, we check if it has
+ # changed. If it has and it is not empty, we have to rerun.
+
+ if self.undef_cites:
+ new = self.list_undefs()
+ if new == []:
+ msg.log(_("no more undefined citations"), pkg="bibtex")
+ self.undef_cites = new
+ else:
+ for cite in new:
+ if cite in self.undef_cites:
+ continue
+ msg.log(_("there are new undefined citations"), pkg="bibtex")
+ self.undef_cites = new
+ return 1
+ msg.log(_("there is no new undefined citation"), pkg="bibtex")
+ self.undef_cites = new
+ return 0
+ else:
+ self.undef_cites = self.list_undefs()
+
+ # At this point we don't know if undefined citations changed. If
+ # BibTeX has not been run before (i.e. there is no log file) we know
+ # that it has to be run now.
+
+ blg = self.base + ".blg"
+ if not exists(blg):
+ msg.log(_("no BibTeX log file"), pkg="bibtex")
+ return 1
+
+ # Here, BibTeX has been run before but we don't know if undefined
+ # citations changed.
+
+ if self.undef_cites == []:
+ msg.log(_("no undefined citations"), pkg="bibtex")
+ return 0
+
+ log = self.doc.src_base + ".log"
+ if getmtime(blg) < getmtime(log):
+ msg.log(_("BibTeX's log is older than the main log"), pkg="bibtex")
+ return 1
+
+ return 0
+
+ def clean (self):
+ self.doc.remove_suffixes([".bbl", ".blg"])
+
+ #
+ # The following method extract information from BibTeX log files.
+ #
+
+ def style_changed (self):
+ """
+ Read the log file if it exists and check if the style used is the one
+ specified in the source. This supposes that the style is mentioned on
+ a line with the form 'The style file: foo.bst'.
+ """
+ blg = self.base + ".blg"
+ if not exists(blg):
+ return 0
+ log = open(blg)
+ line = log.readline()
+ while line != "":
+ if line[:16] == "The style file: ":
+ if line.rstrip()[16:-4] != self.style:
+ msg.log(_("the bibliography style was changed"), pkg="bibtex")
+ log.close()
+ return 1
+ line = log.readline()
+ log.close()
+ return 0
+
+ def get_errors (self):
+ """
+ Read the log file, identify error messages and report them.
+ """
+ blg = self.base + ".blg"
+ if not exists(blg):
+ return
+ log = open(blg)
+ last_line = ""
+ line = log.readline()
+ while line != "":
+ m = re_error.search(line)
+ if m:
+ # TODO: it would be possible to report the offending code.
+ if m.start() == 0:
+ text = string.strip(last_line)
+ else:
+ text = string.strip(line[:m.start()])
+ line = m.group("line")
+ if line: line = int(line)
+ d = {
+ "pkg": "bibtex",
+ "kind": "error",
+ "text": text
+ }
+ d.update( m.groupdict() )
+
+ # BibTeX does not report the path of the database in its log.
+
+ file = d["file"]
+ if file[-4:] == ".bib":
+ file = file[:-4]
+ if self.db.has_key(file):
+ d["file"] = self.db[file]
+ elif self.db.has_key(file + ".bib"):
+ d["file"] = self.db[file + ".bib"]
+ yield d
+ last_line = line
+ line = log.readline()
+ log.close()
+ return
diff --git a/socc2011/concl.tex b/socc2011/concl.tex
new file mode 100644
index 0000000..4f3a78b
--- /dev/null
+++ b/socc2011/concl.tex
@@ -0,0 +1,4 @@
+\section{Conclusion}
+\label{sec:concl}
+
+Therefore, a duck.
diff --git a/socc2011/design.tex b/socc2011/design.tex
new file mode 100644
index 0000000..fbac163
--- /dev/null
+++ b/socc2011/design.tex
@@ -0,0 +1,5 @@
+\section{Design}
+\label{sec:design}
+\input{design1}
+\input{design2}
+\input{design3}
diff --git a/socc2011/design1.tex b/socc2011/design1.tex
new file mode 100644
index 0000000..e69de29
diff --git a/socc2011/design2.tex b/socc2011/design2.tex
new file mode 100644
index 0000000..e69de29
diff --git a/socc2011/design3.tex b/socc2011/design3.tex
new file mode 100644
index 0000000..e69de29
diff --git a/socc2011/eval.tex b/socc2011/eval.tex
new file mode 100644
index 0000000..95acea3
--- /dev/null
+++ b/socc2011/eval.tex
@@ -0,0 +1,9 @@
+\section{Evaluation}
+\label{sec:eval}
+
+\begin{figure}
+ \centerline{\placeholder{Descriptive figure text goes here.}}
+
+\caption{A placeholder caption for a placeholder figure.}
+\label{fig:placeholder}
+\end{figure}
diff --git a/socc2011/intro.tex b/socc2011/intro.tex
new file mode 100644
index 0000000..81015ff
--- /dev/null
+++ b/socc2011/intro.tex
@@ -0,0 +1,12 @@
+\section{Introduction}
+\label{sec:intro}
+
+\begin{itemize}
+ \item Intro
+ \item Outline
+ \item Would fit nicely
+ \item Here
+\end{itemize}
+
+We have some related work in Section~\ref{sec:related}.
+\mk{Need to fix!}
diff --git a/socc2011/paper.tex b/socc2011/paper.tex
new file mode 100644
index 0000000..1f4e4ba
--- /dev/null
+++ b/socc2011/paper.tex
@@ -0,0 +1,238 @@
+\documentclass[pdftex,twocolumn,10pt,letterpaper]{extarticle}
+
+%%% Set these variables appropriately
+%%%
+%% Note: Authors is hardcoded below, this line only used for the PDF info
+\newcommand{\AUTHORS}{Authors}
+\newcommand{\TITLE}{MapReduce in a land where memory is scarce and disks are fast}
+\newcommand{\KEYWORDS}{Put your keywords here}
+\newcommand{\CONFERENCE}{Somewhere}
+\newcommand{\PAGENUMBERS}{yes} % "yes" or "no"
+\newcommand{\COLOR}{yes}
+\newcommand{\showComments}{yes}
+\newcommand{\comment}[1]{}
+\newcommand{\onlyAbstract}{no}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%
+%%% Page Setup
+%%%
+\special{papersize=8.5in,11in}
+\setlength{\pdfpagewidth}{8.5in}
+\setlength{\pdfpageheight}{11in}
+
+\usepackage{ifthen}
+\ifthenelse{\equal{\PAGENUMBERS}{yes}}{%
+\usepackage[nohead,
+ left=0.75in,right=0.85in,top=0.75in,
+ footskip=0.5in,bottom=1in, % Room for page numbers
+ columnsep=0.25in
+ ]{geometry}
+}{%
+\usepackage[noheadfoot,left=0.75in,right=0.85in,top=0.75in,
+ footskip=0.5in,bottom=1in,
+ columnsep=0.25in
+ ]{geometry}
+}
+
+%%%
+%%% Captions
+%%%
+\usepackage[font=bf]{caption}
+%\usepackage[font=bf,aboveskip=0pt]{caption} % SPACE
+
+%%%
+%%% Section headings
+%%%
+\usepackage{titlesec}
+%\titlespacing{\paragraph}{0pt}{*1}{*1} % SPACE
+%\usepackage[compact]{titlesec} % SPACE
+%\titleformat{\section}% % IEEE: caps + period
+% {\bf\large\uppercase}{\thesection.\quad}{0pt}{}
+
+%%%
+%%% Lists
+%%%
+\usepackage{enumitem}
+\setlist{itemsep=0pt,parsep=0pt} % more compact lists
+
+%%%
+%%% Header / Footer
+%%%
+\usepackage{fancyhdr}
+\renewcommand{\headrulewidth}{0pt}
+
+\ifthenelse{\equal{\PAGENUMBERS}{yes}}{%
+ \pagestyle{plain}
+}{%
+ \pagestyle{empty}
+}
+
+%%%
+%%% Bibliography
+%%%
+\usepackage[numbers]{natbib}
+
+%%%
+%%% Footnotes / Endnotes
+%%%
+\interfootnotelinepenalty=10000 % Split footnotes are annoying
+
+% If you want endnodes, uncomment:
+%\usepackage{endnotes}
+%\usepackage{drafthead}
+%\let\footnote=\endnote
+
+%%%
+%%% Tables
+%%%
+\usepackage{booktabs}
+\usepackage{color}
+\usepackage{colortbl}
+\usepackage{float} % Must appear before hyperref to
+ % avoid weird PDF compile issues
+
+%%%
+%%% Fonts
+%%%
+\usepackage{mathptmx} % Times/Times-like math symbols
+\usepackage{courier}
+\usepackage[scaled=0.92]{helvet}
+
+%%%
+%%% PDF setup
+%%%
+\ifthenelse{\equal{\COLOR}{yes}}{%
+ \usepackage[colorlinks]{hyperref}% % for online version
+}{%
+ \usepackage[pdfborder={0 0 0}]{hyperref}% % for paper (B&W) version
+}
+\usepackage{url}
+
+\hypersetup{%
+pdfauthor = {\AUTHORS},
+pdftitle = {\TITLE},
+pdfsubject = {\CONFERENCE},
+pdfkeywords = {\KEYWORDS},
+bookmarksopen = {true}
+}
+
+%%
+%% Figure placeholder macros
+%%
+
+\definecolor{placeholderbg}{rgb}{0.85,0.85,0.85}
+\newcommand{\placeholder}[1]{%
+\fcolorbox{black}{placeholderbg}{\parbox[top][1.5in][c]{0.95\columnwidth}{#1}}}
+
+
+%%%
+%%% Misc
+%%%
+\usepackage[pdftex]{graphicx}
+\usepackage{soul}
+
+%\setlength{\parindent}{0pt}
+%\setlength{\parskip}{\baselineskip}
+
+%\clubpenalty=10000 % Don't allow orphans
+%\widowpenalty=10000 % Don't allow widows
+
+%%%
+%%% To appear/appeared in text on title page
+%%%
+\usepackage[absolute]{textpos}
+\newcommand{\ToAppear}{%
+\begin{textblock*}{\textwidth}(0.95in,0.4in)
+\begin{flushright}
+ %\noindent{\fbox{\textsf{Under submission---please do not redistribute.}}}
+ % --OR--
+ \noindent{\small To appear in \textit{Proceedings of the XYZ}\\
+ \noindent{\small \textit{Conference (XYZ'08)}, City, State, Month 2008}}
+ % --OR--
+ %\noindent{\small In \textit{Proceedings of the XYZ}\\
+ %\noindent{\small \textit{Conference (XYZ'08)}, City, State, Month 2008}}
+\end{flushright}
+\end{textblock*}
+}
+
+%%%
+%%% Sample ACM Copyright Block
+%%%
+\newfloat{acmcr}{b}{acmcr}
+\newcommand{\AcmCopyright}{%
+\begin{acmcr}
+\parbox[b]{20pc}{%
+\footnotesize
+Permission to make digital or hard copies of all or part of this work
+for personal or classroom use is granted without fee provided that
+copies are not made or distributed for profit or commercial advantage
+and that copies bear this notice and the full citation on the first
+page. To copy otherwise, to republish, to post on servers or to
+redistribute to lists, requires prior specific permission and/or a fee.
+
+{\em Conference}, Month Date--Date, Year, Location\\
+Copyright 200X ACM X-XXXXX-XX-X/XX/XX ...\$5.00}
+\end{acmcr}}
+
+%%%
+%%% Comments
+%%%
+\newcommand{\note}[2]{
+ \ifthenelse{\equal{\showComments}{yes}}{\textcolor{#1}{#2}}{}
+}
+
+\newcommand{\srini}[1]{\note{magenta}{Srini: #1}}
+\newcommand{\mk}[1]{\note{blue}{MK: #1}}
+\newcommand{\dina}[1]{\note{red}{Dina: #1}}
+\newcommand{\dga}[1]{\note{green}{dga: #1}}
+
+\date{}
+\title{\textbf{\TITLE}}
+\author{{\large Authors}\\
+{\em Affiliations}}
+
+% This needs to be the last thing before \begin{document}
+%\usepackage{microtype} % SPACE
+
+%%%%%%%%%%%%%%%%%%%% START DOCUMENT %%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+\maketitle
+
+%\AcmCopyright
+%\ToAppear
+
+\input{abstract}
+\ifthenelse{\equal{\onlyAbstract}{no}}{%
+\input{intro}
+\input{design}
+\input{eval}
+\input{related}
+\input{concl}
+
+%\appendix
+%\input{appendix_sources}
+
+%\vspace{-0.1in}
+%\section*{Acknowledgments}
+% Comments for people we need to ack in the final version
+
+%% Bibliography
+\setlength{\bibsep}{2pt}
+\small
+% \footnotesize % SPACE
+\bibliography{ref,rfc}
+\bibliographystyle{abbrvnat}
+%\bibliographystyle{abbrvnat_noaddr} % SPACE
+%\theendnotes % ENDNOTES
+}{% !onlyAbstract
+}
+
+\end{document}
+
+% Local Variables:
+% TeX-command-default: "LaTeX PDF"
+% End:
+
diff --git a/socc2011/related.tex b/socc2011/related.tex
new file mode 100644
index 0000000..d0f072d
--- /dev/null
+++ b/socc2011/related.tex
@@ -0,0 +1,4 @@
+\section{Related Work}
+\label{sec:related}
+
+I like puppies~\cite{Andersen:nsdi2005}.
diff --git a/socc2011/results/bucket.lyx b/socc2011/results/bucket.lyx
new file mode 120000
index 0000000..2fe4f0f
--- /dev/null
+++ b/socc2011/results/bucket.lyx
@@ -0,0 +1 @@
+/home/hamur/Dropbox/wip/fawn/buckets/bucket.lyx
\ No newline at end of file
diff --git a/socc2011/results/bucket.pdf b/socc2011/results/bucket.pdf
new file mode 120000
index 0000000..da23bf3
--- /dev/null
+++ b/socc2011/results/bucket.pdf
@@ -0,0 +1 @@
+/home/hamur/Dropbox/wip/fawn/buckets/bucket.pdf
\ No newline at end of file
diff --git a/sosp2011/README b/sosp2011/README
deleted file mode 100644
index 0f26ab3..0000000
--- a/sosp2011/README
+++ /dev/null
@@ -1,23 +0,0 @@
-The supplied Makefile uses a LaTeX build system called rubber,
-which _greatly_ simplifies the build process. The hard way (multiple
-pdflatex/bibtex incantations) will also work. rubber is available at
-
- http://www.pps.jussieu.fr/~beffara/soft/rubber/
-
-
-To build this paper, you'll want to symlink in the "ref.bib" and "rfc.bib"
-files from dave's biblio repository. You can check those out of the
-subversion repository at
-
- https://moo.cmcl.cs.cmu.edu/svn/biblio/
-
-A note: The given Makefile tries to ensure that all fonts are embedded.
-You can double-check by running 'pdffonts' on the final paper.pdf or an
-individual figure.
-
-#
-# The skeleton for this paper comes from
-# https://moo.cmcl.cs.cmu.edu/svn/paper_skel
-# When editing paper_skel, please ensure that your changes are
-# clean and apply to future papers in general, not just one
-# specific paper.
diff --git a/sosp2011/abbrvnat_noaddr.bst b/sosp2011/abbrvnat_noaddr.bst
deleted file mode 100644
index b06fd54..0000000
--- a/sosp2011/abbrvnat_noaddr.bst
+++ /dev/null
@@ -1,1423 +0,0 @@
-%% File: `abbrvnat.bst'
-%% A modification of `abbrv.bst' for use with natbib package
-%%
-%% Copyright 1993-2005 Patrick W Daly
-%% Max-Planck-Institut f\"ur Sonnensystemforschung
-%% Max-Planck-Str. 2
-%% D-37191 Katlenburg-Lindau
-%% Germany
-%% E-mail: da...@mps.mpg.de
-%%
-%% This program can be redistributed and/or modified under the terms
-%% of the LaTeX Project Public License Distributed from CTAN
-%% archives in directory macros/latex/base/lppl.txt; either
-%% version 1 of the License, or any later version.
-%%
- % Version and source file information:
- % \ProvidesFile{natbst.mbs}[2005/01/07 1.8 (PWD)]
- %
- % BibTeX `plainnat' family
- % version 0.99b for BibTeX versions 0.99a or later,
- % for LaTeX versions 2.09 and 2e.
- %
- % For use with the `natbib.sty' package; emulates the corresponding
- % member of the `plain' family, but with author-year citations.
- %
- % With version 6.0 of `natbib.sty', it may also be used for numerical
- % citations, while retaining the commands \citeauthor, \citefullauthor,
- % and \citeyear to print the corresponding information.
- %
- % For version 7.0 of `natbib.sty', the KEY field replaces missing
- % authors/editors, and the date is left blank in \bibitem.
- %
- % Includes field EID for the sequence/citation number of electronic journals
- % which is used instead of page numbers.
- %
- % Includes fields ISBN and ISSN.
- %
- % Includes field URL for Internet addresses.
- %
- % Includes field DOI for Digital Object Idenfifiers.
- %
- % Works best with the url.sty package of Donald Arseneau.
- %
- % Works with identical authors and year are further sorted by
- % citation key, to preserve any natural sequence.
- %
-ENTRY
- { address
- author
- booktitle
- chapter
- doi
- eid
- edition
- editor
- howpublished
- institution
- isbn
- issn
- journal
- key
- month
- note
- number
- organization
- pages
- publisher
- school
- series
- title
- type
- url
- volume
- year
- }
- {}
- { label extra.label sort.label short.list }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-STRINGS { s t }
-
-FUNCTION {output.nonnull}
-{ 's :=
- output.state mid.sentence =
- { ", " * write$ }
- { output.state after.block =
- { add.period$ write$
- newline$
- "\newblock " write$
- }
- { output.state before.all =
- 'write$
- { add.period$ " " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION {fin.entry}
-{ add.period$
- write$
- newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION {new.block.checka}
-{ empty$
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "\emph{" swap$ * "}" * }
- if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {format.names}
-{ 's :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
- nameptr #1 >
- { namesleft #1 >
- { ", " * t * }
- { numnames #2 >
- { "," * }
- 'skip$
- if$
- t "others" =
- { " et~al." * }
- { " and " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {format.key}
-{ empty$
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION {format.authors}
-{ author empty$
- { "" }
- { author format.names }
- if$
-}
-
-FUNCTION {format.editors}
-{ editor empty$
- { "" }
- { editor format.names
- editor num.names$ #1 >
- { ", editors" * }
- { ", editor" * }
- if$
- }
- if$
-}
-
-FUNCTION {format.isbn}
-{ isbn empty$
- { "" }
- { new.block "ISBN " isbn * }
- if$
-}
-
-FUNCTION {format.issn}
-{ issn empty$
- { "" }
- { new.block "ISSN " issn * }
- if$
-}
-
-FUNCTION {format.url}
-{ url empty$
- { "" }
- { new.block "URL \url{" url * "}" * }
- if$
-}
-
-FUNCTION {format.doi}
-{ doi empty$
- { "" }
- { new.block "\doi{" doi * "}" * }
- if$
-}
-
-FUNCTION {format.title}
-{ title empty$
- { "" }
- { title "t" change.case$ }
- if$
-}
-
-FUNCTION {format.full.names}
-{'s :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv~}{ll}" format.name$ 't :=
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "others" =
- { " et~al." * }
- { " and " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {author.editor.full}
-{ author empty$
- { editor empty$
- { "" }
- { editor format.full.names }
- if$
- }
- { author format.full.names }
- if$
-}
-
-FUNCTION {author.full}
-{ author empty$
- { "" }
- { author format.full.names }
- if$
-}
-
-FUNCTION {editor.full}
-{ editor empty$
- { "" }
- { editor format.full.names }
- if$
-}
-
-FUNCTION {make.full.names}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.full
- { type$ "proceedings" =
- 'editor.full
- 'author.full
- if$
- }
- if$
-}
-
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem[" write$
- label write$
- ")" make.full.names duplicate$ short.list =
- { pop$ }
- { * }
- if$
- "]{" * write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION {n.dashify}
-{ 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }
- { { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
-}
-
-FUNCTION {format.date}
-{ year duplicate$ empty$
- { "empty year in " cite$ * warning$
- pop$ "" }
- 'skip$
- if$
- month empty$
- 'skip$
- { month
- " " * swap$ *
- }
- if$
- extra.label *
-}
-
-FUNCTION {format.btitle}
-{ title emphasize
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { "volume" volume tie.or.space.connect
- series empty$
- 'skip$
- { " of " * series emphasize * }
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { output.state mid.sentence =
- { "number" }
- { "Number" }
- if$
- number tie.or.space.connect
- series empty$
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {format.edition}
-{ edition empty$
- { "" }
- { output.state mid.sentence =
- { edition "l" change.case$ " edition" * }
- { edition "t" change.case$ " edition" * }
- if$
- }
- if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-
-FUNCTION {format.pages}
-{ pages empty$
- { "" }
- { pages multi.page.check
- { "pages" pages n.dashify tie.or.space.connect }
- { "page" pages tie.or.space.connect }
- if$
- }
- if$
-}
-
-FUNCTION {format.eid}
-{ eid empty$
- { "" }
- { "art." eid tie.or.space.connect }
- if$
-}
-
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
- number empty$
- 'skip$
- { "\penalty0 (" number * ")" * *
- volume empty$
- { "there's a number but no volume in " cite$ * warning$ }
- 'skip$
- if$
- }
- if$
- pages empty$
- 'skip$
- { duplicate$ empty$
- { pop$ format.pages }
- { ":\penalty0 " * pages n.dashify * }
- if$
- }
- if$
-}
-
-FUNCTION {format.vol.num.eid}
-{ volume field.or.null
- number empty$
- 'skip$
- { "\penalty0 (" number * ")" * *
- volume empty$
- { "there's a number but no volume in " cite$ * warning$ }
- 'skip$
- if$
- }
- if$
- eid empty$
- 'skip$
- { duplicate$ empty$
- { pop$ format.eid }
- { ":\penalty0 " * eid * }
- if$
- }
- if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- 'format.pages
- { type empty$
- { "chapter" }
- { type "l" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty$
- 'skip$
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
- { "" }
- { editor empty$
- { "In " booktitle emphasize * }
- { "In " format.editors * ", " * booktitle emphasize * }
- if$
- }
- if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
- key empty$ not and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
- if$
-}
-
-FUNCTION {format.thesis.type}
-{ type empty$
- 'skip$
- { pop$
- type "t" change.case$
- }
- if$
-}
-
-FUNCTION {format.tr.number}
-{ type empty$
- { "Technical Report" }
- 'type
- if$
- number empty$
- { "t" change.case$ }
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION {format.article.crossref}
-{ key empty$
- { journal empty$
- { "need key or journal for " cite$ * " to crossref " * crossref *
- warning$
- ""
- }
- { "In \emph{" journal * "}" * }
- if$
- }
- { "In " key * }
- if$
- " \citep{" * crossref * "}" *
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- "In "
- }
- { "Volume" volume tie.or.space.connect
- " of " *
- }
- if$
- editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { series empty$
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "\emph{" * series * "}" * }
- if$
- }
- { key * }
- if$
- }
- 'skip$
- if$
- ", \citet{" * crossref * "}" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { booktitle empty$
- { "need editor, key, or booktitle for " cite$ * " to crossref " *
- crossref * warning$
- ""
- }
- { "In \emph{" booktitle * "}" * }
- if$
- }
- { "In " key * }
- if$
- }
- { "In " }
- if$
- " \citet{" * crossref * "}" *
-}
-
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { journal emphasize "journal" output.check
- eid empty$
- { format.vol.num.pages output }
- { format.vol.num.eid output }
- if$
- format.date "year" output.check
- }
- { format.article.crossref output.nonnull
- eid empty$
- { format.pages output }
- { format.eid output }
- if$
- }
- if$
- format.issn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {book}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- editor format.key output
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- new.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- format.edition output
- format.date "year" output.check
- format.isbn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- author format.key output
- new.block
- format.title "title" output.check
- howpublished address new.block.checkb
- howpublished output
- address output
- format.date output
- format.isbn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check
- editor format.key output
- }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- new.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- format.edition output
- format.date "year" output.check
- format.isbn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.chapter.pages output
- new.sentence
- publisher "publisher" output.check
- address output
- format.edition output
- format.date "year" output.check
- }
- { format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
- }
- if$
- format.isbn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.pages output
- organization publisher new.sentence.checkb
- organization output
- publisher output
- format.date "year" output.check
- }
- { format.incoll.inproc.crossref output.nonnull
- format.pages output
- }
- if$
- format.isbn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
- format.authors output
- author format.key output
- new.block
- format.btitle "title" output.check
- organization address new.block.checkb
- organization output
- address output
- format.edition output
- format.date output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- "Master's thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.date "year" output.check
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- author format.key output
- title howpublished new.block.checkb
- format.title output
- howpublished new.block.checka
- howpublished output
- format.date output
- format.issn output
- format.url output
- new.block
- note output
- fin.entry
- empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.btitle "title" output.check
- new.block
- "PhD thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.date "year" output.check
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- format.editors output
- editor format.key output
- new.block
- format.btitle "title" output.check
- format.bvolume output
- format.number.series output
- address output
- format.date "year" output.check
- new.sentence
- organization output
- publisher output
- format.isbn output
- format.doi output
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- new.block
- format.tr.number output.nonnull
- institution "institution" output.check
- address output
- format.date "year" output.check
- format.url output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- author format.key output
- new.block
- format.title "title" output.check
- format.url output
- new.block
- note "note" output.check
- format.date output
- fin.entry
-}
-
-FUNCTION {default.type} { misc }
-
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"Mar."}
-
-MACRO {apr} {"Apr."}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"Aug."}
-
-MACRO {sep} {"Sept."}
-
-MACRO {oct} {"Oct."}
-
-MACRO {nov} {"Nov."}
-
-MACRO {dec} {"Dec."}
-
-
-
-MACRO {acmcs} {"ACM Comput. Surv."}
-
-MACRO {acta} {"Acta Inf."}
-
-MACRO {cacm} {"Commun. ACM"}
-
-MACRO {ibmjrd} {"IBM J. Res. Dev."}
-
-MACRO {ibmsj} {"IBM Syst.~J."}
-
-MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
-
-MACRO {ieeetc} {"IEEE Trans. Comput."}
-
-MACRO {ieeetcad}
- {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
-
-MACRO {ipl} {"Inf. Process. Lett."}
-
-MACRO {jacm} {"J.~ACM"}
-
-MACRO {jcss} {"J.~Comput. Syst. Sci."}
-
-MACRO {scp} {"Sci. Comput. Programming"}
-
-MACRO {sicomp} {"SIAM J. Comput."}
-
-MACRO {tocs} {"ACM Trans. Comput. Syst."}
-
-MACRO {tods} {"ACM Trans. Database Syst."}
-
-MACRO {tog} {"ACM Trans. Gr."}
-
-MACRO {toms} {"ACM Trans. Math. Softw."}
-
-MACRO {toois} {"ACM Trans. Office Inf. Syst."}
-
-MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
-
-MACRO {tcs} {"Theoretical Comput. Sci."}
-
-
-READ
-
-FUNCTION {sortify}
-{ purify$
- "l" change.case$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
-}
-
-FUNCTION {format.lab.names}
-{ 's :=
- s #1 "{vv~}{ll}" format.name$
- s num.names$ duplicate$
- #2 >
- { pop$ " et~al." * }
- { #2 <
- 'skip$
- { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et~al." * }
- { " and " * s #2 "{vv~}{ll}" format.name$ * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.key.organization.label}
-{ author empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.organization.label}
-{ editor empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- 'key
- if$
- }
- { editor format.lab.names }
- if$
-}
-
-FUNCTION {calc.short.authors}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.organization.label
- { type$ "manual" =
- 'author.key.organization.label
- 'author.key.label
- if$
- }
- if$
- }
- if$
- 'short.list :=
-}
-
-FUNCTION {calc.label}
-{ calc.short.authors
- short.list
- "("
- *
- year duplicate$ empty$
- short.list key field.or.null = or
- { pop$ "" }
- 'skip$
- if$
- *
- 'label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- {
- s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
- nameptr #1 >
- {
- " " *
- namesleft #1 = t "others" = and
- { "zzzzz" * }
- { numnames #2 > nameptr #2 = and
- { "zz" * year field.or.null * " " * }
- 'skip$
- if$
- t sortify *
- }
- if$
- }
- { t sortify * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
- "A " #2
- "An " #3
- "The " #4 t chop.word
- chop.word
- chop.word
- sortify
- #1 global.max$ substring$
-}
-
-FUNCTION {author.sort}
-{ author empty$
- { key empty$
- { "to sort, need author or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {author.editor.sort}
-{ author empty$
- { editor empty$
- { key empty$
- { "to sort, need author, editor, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {author.organization.sort}
-{ author empty$
- { organization empty$
- { key empty$
- { "to sort, need author, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {editor.organization.sort}
-{ editor empty$
- { organization empty$
- { key empty$
- { "to sort, need editor, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-
-
-FUNCTION {presort}
-{ calc.label
- label sortify
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.organization.sort
- { type$ "manual" =
- 'author.organization.sort
- 'author.sort
- if$
- }
- if$
- }
- if$
- " "
- *
- cite$
- *
- #1 entry.max$ substring$
- 'sort.label :=
- sort.label *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE {presort}
-
-SORT
-
-STRINGS { longest.label last.label next.extra }
-
-INTEGERS { longest.label.width last.extra.num number.label }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
- #0 'number.label :=
-}
-
-FUNCTION {forward.pass}
-{ last.label label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- label 'last.label :=
- }
- if$
- number.label #1 + 'number.label :=
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- extra.label 'next.extra :=
- extra.label
- duplicate$ empty$
- 'skip$
- { "{\natexlab{" swap$ * "}}" * }
- if$
- 'extra.label :=
- label extra.label * 'label :=
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
-FUNCTION {bib.sort.order}
-{ sort.label 'sort.key$ :=
-}
-
-ITERATE {bib.sort.order}
-
-SORT
-
-FUNCTION {begin.bib}
-{ preamble$ empty$
- 'skip$
- { preamble$ write$ newline$ }
- if$
- "\begin{thebibliography}{" number.label int.to.str$ * "}" *
- write$ newline$
- "\providecommand{\natexlab}[1]{#1}"
- write$ newline$
- "\providecommand{\url}[1]{\texttt{#1}}"
- write$ newline$
- "\expandafter\ifx\csname urlstyle\endcsname\relax"
- write$ newline$
- " \providecommand{\doi}[1]{doi: #1}\else"
- write$ newline$
- " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
- write$ newline$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
- "\end{thebibliography}" write$ newline$
-}
-
-EXECUTE {end.bib}
diff --git a/sosp2011/abstract.tex b/sosp2011/abstract.tex
deleted file mode 100644
index 2de995a..0000000
--- a/sosp2011/abstract.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-\begin{abstract}
-
-This paper is very abstract
-
-\end{abstract}
diff --git a/sosp2011/bibtex.py b/sosp2011/bibtex.py
deleted file mode 100644
index dbdc71f..0000000
--- a/sosp2011/bibtex.py
+++ /dev/null
@@ -1,402 +0,0 @@
-# This file is part of Rubber and thus covered by the GPL
-# (c) Emmanuel Beffara, 2002--2006
-"""
-BibTeX support for Rubber
-
-This module is a special one: it is triggered by the macros \\bibliography and
-\\bibliographystyle and not as a package, so the main system knows about it.
-The module provides the following commands:
-
- path <dir> = adds <dir> to the search path for databases
- stylepath <dir> = adds <dir> to the search path for styles
-"""
-
-# Stop python 2.2 from calling "yield" statements syntax errors.
-from __future__ import generators
-
-import os, sys
-from os.path import *
-import re, string
-
-from rubber import _
-from rubber import *
-
-re_bibdata = re.compile(r"\\bibdata{(?P<data>.*)}")
-re_citation = re.compile(r"\\citation{(?P<cite>.*)}")
-re_undef = re.compile("LaTeX Warning: Citation `(?P<cite>.*)' .*undefined.*")
-
-# The regular expression that identifies errors in BibTeX log files is heavily
-# heuristic. The remark is that all error messages end with a text of the form
-# "---line xxx of file yyy" or "---while reading file zzz". The actual error
-# is either the text before the dashes or the text on the previous line.
-
-re_error = re.compile(
- "---(line (?P<line>[0-9]+) of|while reading) file (?P<file>.*)")
-
-class Module (rubber.rules.latex.Module):
- """
- This class is the module that handles BibTeX in Rubber. It provides the
- funcionality required when compiling documents as well as material to
- parse blg files for diagnostics.
- """
- def __init__ (self, doc, dict, base=None):
- """
- Initialize the state of the module and register appropriate functions
- in the main process. The extra arugment 'base' can be used to specify
- the base name of the aux file, it defaults to the document name.
- """
- self.doc = doc
- self.env = doc.env
-
- if base is None:
- self.base = doc.src_base
- else:
- self.base = base
-
- cwd = self.env.vars["cwd"]
- self.bib_path = [cwd]
- if doc.src_path != cwd:
- self.bib_path.append(doc.src_path)
- self.bst_path = [cwd]
-
- self.undef_cites = None
- self.used_cites = None
- self.style = None
- self.set_style("plain")
- self.db = {}
- self.sorted = 1
- self.run_needed = 0
-
- #
- # The following method are used to specify the various datafiles that
- # BibTeX uses.
- #
-
- def do_path (self, path):
- self.bib_path.append(self.doc.abspath(path))
-
- def do_stylepath (self, path):
- self.bst_path.append(self.doc.abspath(path))
-
- def do_sorted (self, mode):
- self.sorted = mode in ("true", "yes", "1")
-
- def add_db (self, name):
- """
- Register a bibliography database file.
- """
- for dir in self.bib_path:
- bib = join(dir, name + ".bib")
- if exists(bib):
- self.db[name] = bib
- self.doc.sources[bib] = DependLeaf(self.env, bib)
- self.doc.not_included.append(bib)
- return
-
- def set_style (self, style):
- """
- Define the bibliography style used. This method is called when
- \\bibliographystyle is found. If the style file is found in the
- current directory, it is considered a dependency.
- """
- if self.style:
- old_bst = self.style + ".bst"
- if exists(old_bst) and self.doc.sources.has_key(old_bst):
- del self.doc.sources[old_bst]
-
- self.style = style
- for dir in self.bst_path:
- new_bst = join(dir, style + ".bst")
- if exists(new_bst):
- self.bst_file = new_bst
- self.doc.sources[new_bst] = DependLeaf(self.env, new_bst)
- return
- self.bst_file = None
-
- #
- # The following methods are responsible of detecting when running BibTeX
- # is needed and actually running it.
- #
-
- def pre_compile (self):
- """
- Run BibTeX if needed before the first compilation. This function also
- checks if BibTeX has been run by someone else, and in this case it
- tells the system that it should recompile the document.
- """
- if exists(self.doc.src_base + ".aux"):
- self.used_cites, self.prev_dbs = self.parse_aux()
- else:
- self.prev_dbs = None
- if self.doc.log.lines:
- self.undef_cites = self.list_undefs()
-
- self.run_needed = self.first_run_needed()
- if self.doc.must_compile:
- # If a LaTeX compilation is going to happen, it is not necessary
- # to bother with BibTeX yet.
- return 0
- if self.run_needed:
- return self.run()
-
- bbl = self.base + ".bbl"
- if exists(bbl):
- if getmtime(bbl) > getmtime(self.doc.src_base + ".log"):
- self.doc.must_compile = 1
- return 0
-
- def first_run_needed (self):
- """
- The condition is only on the database files' modification dates, but
- it would be more clever to check if the results have changed.
- BibTeXing is also needed when the last run of BibTeX failed, and in
- the very particular case when the style has changed since last
- compilation.
- """
- if not exists(self.base + ".aux"):
- return 0
- if not exists(self.base + ".blg"):
- return 1
-
- dtime = getmtime(self.base + ".blg")
- for db in self.db.values():
- if getmtime(db) > dtime:
- msg.log(_("bibliography database %s was modified") % db, pkg="bibtex")
- return 1
-
- blg = open(self.base + ".blg")
- for line in blg.readlines():
- if re_error.search(line):
- blg.close()
- msg.log(_("last BibTeXing failed"), pkg="bibtex")
- return 1
- blg.close()
-
- if self.style_changed():
- return 1
- if self.bst_file and getmtime(self.bst_file) > dtime:
- msg.log(_("the bibliography style file was modified"), pkg="bibtex")
- return 1
- return 0
-
- def parse_aux (self):
- """
- Parse the aux files and return the list of all defined citations and
- the list of databases used.
- """
- last = 0
- cites = {}
- dbs = []
- for auxname in self.doc.aux_md5.keys():
- aux = open(auxname)
- for line in aux.readlines():
- match = re_citation.match(line)
- if match:
- cite = match.group("cite")
- if not cites.has_key(cite):
- last = last + 1
- cites[cite] = last
- continue
- match = re_bibdata.match(line)
- if match:
- dbs.extend(match.group("data").split(","))
- aux.close()
- dbs.sort()
-
- if self.sorted:
- list = cites.keys()
- list.sort()
- return list, dbs
- else:
- list = [(n,c) for (c,n) in cites.items()]
- list.sort()
- return [c for (n,c) in list], dbs
-
- def list_undefs (self):
- """
- Return the list of all undefined citations.
- """
- cites = {}
- for line in self.doc.log.lines:
- match = re_undef.match(line)
- if match:
- cites[match.group("cite")] = None
- list = cites.keys()
- list.sort()
- return list
-
- def post_compile (self):
- """
- This method runs BibTeX if needed to solve undefined citations. If it
- was run, then force a new LaTeX compilation.
- """
- if not self.bibtex_needed():
- msg.log(_("no BibTeXing needed"), pkg="bibtex")
- return 0
- return self.run()
-
- def run (self):
- """
- This method actually runs BibTeX with the appropriate environment
- variables set.
- """
- msg.progress(_("running BibTeX on %s") % self.base)
- doc = {}
- if len(self.bib_path) != 1:
- doc["BIBINPUTS"] = string.join(self.bib_path +
- [os.getenv("BIBINPUTS", "")], ":")
- if len(self.bst_path) != 1:
- doc["BSTINPUTS"] = string.join(self.bst_path +
- [os.getenv("BSTINPUTS", "")], ":")
- if self.env.execute(["bibtex", "--min-crossrefs=100", self.base], doc):
- msg.info(_("There were errors making the bibliography."))
- return 1
- self.run_needed = 0
- self.doc.must_compile = 1
- return 0
-
- def bibtex_needed (self):
- """
- Return true if BibTeX must be run.
- """
- if self.run_needed:
- return 1
- msg.log(_("checking if BibTeX must be run..."), pkg="bibtex")
-
- new, dbs = self.parse_aux()
-
- # If there was a list of used citations, we check if it has
- # changed. If it has, we have to rerun.
-
- if self.prev_dbs is not None and self.prev_dbs != dbs:
- msg.log(_("the set of databases changed"), pkg="bibtex")
- self.prev_dbs = dbs
- self.used_cites = new
- self.undef_cites = self.list_undefs()
- return 1
- self.prev_dbs = dbs
-
- # If there was a list of used citations, we check if it has
- # changed. If it has, we have to rerun.
-
- if self.used_cites:
- if new != self.used_cites:
- msg.log(_("the list of citations changed"), pkg="bibtex")
- self.used_cites = new
- self.undef_cites = self.list_undefs()
- return 1
- self.used_cites = new
-
- # If there was a list of undefined citations, we check if it has
- # changed. If it has and it is not empty, we have to rerun.
-
- if self.undef_cites:
- new = self.list_undefs()
- if new == []:
- msg.log(_("no more undefined citations"), pkg="bibtex")
- self.undef_cites = new
- else:
- for cite in new:
- if cite in self.undef_cites:
- continue
- msg.log(_("there are new undefined citations"), pkg="bibtex")
- self.undef_cites = new
- return 1
- msg.log(_("there is no new undefined citation"), pkg="bibtex")
- self.undef_cites = new
- return 0
- else:
- self.undef_cites = self.list_undefs()
-
- # At this point we don't know if undefined citations changed. If
- # BibTeX has not been run before (i.e. there is no log file) we know
- # that it has to be run now.
-
- blg = self.base + ".blg"
- if not exists(blg):
- msg.log(_("no BibTeX log file"), pkg="bibtex")
- return 1
-
- # Here, BibTeX has been run before but we don't know if undefined
- # citations changed.
-
- if self.undef_cites == []:
- msg.log(_("no undefined citations"), pkg="bibtex")
- return 0
-
- log = self.doc.src_base + ".log"
- if getmtime(blg) < getmtime(log):
- msg.log(_("BibTeX's log is older than the main log"), pkg="bibtex")
- return 1
-
- return 0
-
- def clean (self):
- self.doc.remove_suffixes([".bbl", ".blg"])
-
- #
- # The following method extract information from BibTeX log files.
- #
-
- def style_changed (self):
- """
- Read the log file if it exists and check if the style used is the one
- specified in the source. This supposes that the style is mentioned on
- a line with the form 'The style file: foo.bst'.
- """
- blg = self.base + ".blg"
- if not exists(blg):
- return 0
- log = open(blg)
- line = log.readline()
- while line != "":
- if line[:16] == "The style file: ":
- if line.rstrip()[16:-4] != self.style:
- msg.log(_("the bibliography style was changed"), pkg="bibtex")
- log.close()
- return 1
- line = log.readline()
- log.close()
- return 0
-
- def get_errors (self):
- """
- Read the log file, identify error messages and report them.
- """
- blg = self.base + ".blg"
- if not exists(blg):
- return
- log = open(blg)
- last_line = ""
- line = log.readline()
- while line != "":
- m = re_error.search(line)
- if m:
- # TODO: it would be possible to report the offending code.
- if m.start() == 0:
- text = string.strip(last_line)
- else:
- text = string.strip(line[:m.start()])
- line = m.group("line")
- if line: line = int(line)
- d = {
- "pkg": "bibtex",
- "kind": "error",
- "text": text
- }
- d.update( m.groupdict() )
-
- # BibTeX does not report the path of the database in its log.
-
- file = d["file"]
- if file[-4:] == ".bib":
- file = file[:-4]
- if self.db.has_key(file):
- d["file"] = self.db[file]
- elif self.db.has_key(file + ".bib"):
- d["file"] = self.db[file + ".bib"]
- yield d
- last_line = line
- line = log.readline()
- log.close()
- return
diff --git a/sosp2011/concl.tex b/sosp2011/concl.tex
deleted file mode 100644
index 4f3a78b..0000000
--- a/sosp2011/concl.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\section{Conclusion}
-\label{sec:concl}
-
-Therefore, a duck.
diff --git a/sosp2011/design.tex b/sosp2011/design.tex
deleted file mode 100644
index 03ee594..0000000
--- a/sosp2011/design.tex
+++ /dev/null
@@ -1,2 +0,0 @@
-\section{Design}
-\label{sec:design}
diff --git a/sosp2011/eval.tex b/sosp2011/eval.tex
deleted file mode 100644
index 95acea3..0000000
--- a/sosp2011/eval.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-\section{Evaluation}
-\label{sec:eval}
-
-\begin{figure}
- \centerline{\placeholder{Descriptive figure text goes here.}}
-
-\caption{A placeholder caption for a placeholder figure.}
-\label{fig:placeholder}
-\end{figure}
diff --git a/sosp2011/intro.tex b/sosp2011/intro.tex
deleted file mode 100644
index 81015ff..0000000
--- a/sosp2011/intro.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-\section{Introduction}
-\label{sec:intro}
-
-\begin{itemize}
- \item Intro
- \item Outline
- \item Would fit nicely
- \item Here
-\end{itemize}
-
-We have some related work in Section~\ref{sec:related}.
-\mk{Need to fix!}
diff --git a/sosp2011/paper.tex b/sosp2011/paper.tex
deleted file mode 100644
index 1f4e4ba..0000000
--- a/sosp2011/paper.tex
+++ /dev/null
@@ -1,238 +0,0 @@
-\documentclass[pdftex,twocolumn,10pt,letterpaper]{extarticle}
-
-%%% Set these variables appropriately
-%%%
-%% Note: Authors is hardcoded below, this line only used for the PDF info
-\newcommand{\AUTHORS}{Authors}
-\newcommand{\TITLE}{MapReduce in a land where memory is scarce and disks are fast}
-\newcommand{\KEYWORDS}{Put your keywords here}
-\newcommand{\CONFERENCE}{Somewhere}
-\newcommand{\PAGENUMBERS}{yes} % "yes" or "no"
-\newcommand{\COLOR}{yes}
-\newcommand{\showComments}{yes}
-\newcommand{\comment}[1]{}
-\newcommand{\onlyAbstract}{no}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%
-%%% Page Setup
-%%%
-\special{papersize=8.5in,11in}
-\setlength{\pdfpagewidth}{8.5in}
-\setlength{\pdfpageheight}{11in}
-
-\usepackage{ifthen}
-\ifthenelse{\equal{\PAGENUMBERS}{yes}}{%
-\usepackage[nohead,
- left=0.75in,right=0.85in,top=0.75in,
- footskip=0.5in,bottom=1in, % Room for page numbers
- columnsep=0.25in
- ]{geometry}
-}{%
-\usepackage[noheadfoot,left=0.75in,right=0.85in,top=0.75in,
- footskip=0.5in,bottom=1in,
- columnsep=0.25in
- ]{geometry}
-}
-
-%%%
-%%% Captions
-%%%
-\usepackage[font=bf]{caption}
-%\usepackage[font=bf,aboveskip=0pt]{caption} % SPACE
-
-%%%
-%%% Section headings
-%%%
-\usepackage{titlesec}
-%\titlespacing{\paragraph}{0pt}{*1}{*1} % SPACE
-%\usepackage[compact]{titlesec} % SPACE
-%\titleformat{\section}% % IEEE: caps + period
-% {\bf\large\uppercase}{\thesection.\quad}{0pt}{}
-
-%%%
-%%% Lists
-%%%
-\usepackage{enumitem}
-\setlist{itemsep=0pt,parsep=0pt} % more compact lists
-
-%%%
-%%% Header / Footer
-%%%
-\usepackage{fancyhdr}
-\renewcommand{\headrulewidth}{0pt}
-
-\ifthenelse{\equal{\PAGENUMBERS}{yes}}{%
- \pagestyle{plain}
-}{%
- \pagestyle{empty}
-}
-
-%%%
-%%% Bibliography
-%%%
-\usepackage[numbers]{natbib}
-
-%%%
-%%% Footnotes / Endnotes
-%%%
-\interfootnotelinepenalty=10000 % Split footnotes are annoying
-
-% If you want endnodes, uncomment:
-%\usepackage{endnotes}
-%\usepackage{drafthead}
-%\let\footnote=\endnote
-
-%%%
-%%% Tables
-%%%
-\usepackage{booktabs}
-\usepackage{color}
-\usepackage{colortbl}
-\usepackage{float} % Must appear before hyperref to
- % avoid weird PDF compile issues
-
-%%%
-%%% Fonts
-%%%
-\usepackage{mathptmx} % Times/Times-like math symbols
-\usepackage{courier}
-\usepackage[scaled=0.92]{helvet}
-
-%%%
-%%% PDF setup
-%%%
-\ifthenelse{\equal{\COLOR}{yes}}{%
- \usepackage[colorlinks]{hyperref}% % for online version
-}{%
- \usepackage[pdfborder={0 0 0}]{hyperref}% % for paper (B&W) version
-}
-\usepackage{url}
-
-\hypersetup{%
-pdfauthor = {\AUTHORS},
-pdftitle = {\TITLE},
-pdfsubject = {\CONFERENCE},
-pdfkeywords = {\KEYWORDS},
-bookmarksopen = {true}
-}
-
-%%
-%% Figure placeholder macros
-%%
-
-\definecolor{placeholderbg}{rgb}{0.85,0.85,0.85}
-\newcommand{\placeholder}[1]{%
-\fcolorbox{black}{placeholderbg}{\parbox[top][1.5in][c]{0.95\columnwidth}{#1}}}
-
-
-%%%
-%%% Misc
-%%%
-\usepackage[pdftex]{graphicx}
-\usepackage{soul}
-
-%\setlength{\parindent}{0pt}
-%\setlength{\parskip}{\baselineskip}
-
-%\clubpenalty=10000 % Don't allow orphans
-%\widowpenalty=10000 % Don't allow widows
-
-%%%
-%%% To appear/appeared in text on title page
-%%%
-\usepackage[absolute]{textpos}
-\newcommand{\ToAppear}{%
-\begin{textblock*}{\textwidth}(0.95in,0.4in)
-\begin{flushright}
- %\noindent{\fbox{\textsf{Under submission---please do not redistribute.}}}
- % --OR--
- \noindent{\small To appear in \textit{Proceedings of the XYZ}\\
- \noindent{\small \textit{Conference (XYZ'08)}, City, State, Month 2008}}
- % --OR--
- %\noindent{\small In \textit{Proceedings of the XYZ}\\
- %\noindent{\small \textit{Conference (XYZ'08)}, City, State, Month 2008}}
-\end{flushright}
-\end{textblock*}
-}
-
-%%%
-%%% Sample ACM Copyright Block
-%%%
-\newfloat{acmcr}{b}{acmcr}
-\newcommand{\AcmCopyright}{%
-\begin{acmcr}
-\parbox[b]{20pc}{%
-\footnotesize
-Permission to make digital or hard copies of all or part of this work
-for personal or classroom use is granted without fee provided that
-copies are not made or distributed for profit or commercial advantage
-and that copies bear this notice and the full citation on the first
-page. To copy otherwise, to republish, to post on servers or to
-redistribute to lists, requires prior specific permission and/or a fee.
-
-{\em Conference}, Month Date--Date, Year, Location\\
-Copyright 200X ACM X-XXXXX-XX-X/XX/XX ...\$5.00}
-\end{acmcr}}
-
-%%%
-%%% Comments
-%%%
-\newcommand{\note}[2]{
- \ifthenelse{\equal{\showComments}{yes}}{\textcolor{#1}{#2}}{}
-}
-
-\newcommand{\srini}[1]{\note{magenta}{Srini: #1}}
-\newcommand{\mk}[1]{\note{blue}{MK: #1}}
-\newcommand{\dina}[1]{\note{red}{Dina: #1}}
-\newcommand{\dga}[1]{\note{green}{dga: #1}}
-
-\date{}
-\title{\textbf{\TITLE}}
-\author{{\large Authors}\\
-{\em Affiliations}}
-
-% This needs to be the last thing before \begin{document}
-%\usepackage{microtype} % SPACE
-
-%%%%%%%%%%%%%%%%%%%% START DOCUMENT %%%%%%%%%%%%%%%%%%%%%%%%
-\begin{document}
-
-\maketitle
-
-%\AcmCopyright
-%\ToAppear
-
-\input{abstract}
-\ifthenelse{\equal{\onlyAbstract}{no}}{%
-\input{intro}
-\input{design}
-\input{eval}
-\input{related}
-\input{concl}
-
-%\appendix
-%\input{appendix_sources}
-
-%\vspace{-0.1in}
-%\section*{Acknowledgments}
-% Comments for people we need to ack in the final version
-
-%% Bibliography
-\setlength{\bibsep}{2pt}
-\small
-% \footnotesize % SPACE
-\bibliography{ref,rfc}
-\bibliographystyle{abbrvnat}
-%\bibliographystyle{abbrvnat_noaddr} % SPACE
-%\theendnotes % ENDNOTES
-}{% !onlyAbstract
-}
-
-\end{document}
-
-% Local Variables:
-% TeX-command-default: "LaTeX PDF"
-% End:
-
diff --git a/sosp2011/related.tex b/sosp2011/related.tex
deleted file mode 100644
index d0f072d..0000000
--- a/sosp2011/related.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\section{Related Work}
-\label{sec:related}
-
-I like puppies~\cite{Andersen:nsdi2005}.
diff --git a/sosp2011/results/bucket.lyx b/sosp2011/results/bucket.lyx
deleted file mode 120000
index 2fe4f0f..0000000
--- a/sosp2011/results/bucket.lyx
+++ /dev/null
@@ -1 +0,0 @@
-/home/hamur/Dropbox/wip/fawn/buckets/bucket.lyx
\ No newline at end of file
diff --git a/sosp2011/results/bucket.pdf b/sosp2011/results/bucket.pdf
deleted file mode 120000
index da23bf3..0000000
--- a/sosp2011/results/bucket.pdf
+++ /dev/null
@@ -1 +0,0 @@
-/home/hamur/Dropbox/wip/fawn/buckets/bucket.pdf
\ No newline at end of file