https://github.com/mozilla/gecko-dev
- HEAD
- refs/heads/FIREFOX_ESR_115_0_X_RELBRANCH
- refs/heads/FIREFOX_ESR_115_2_X_RELBRANCH
- refs/heads/FIREFOX_ESR_115_3_X_RELBRANCH
- refs/heads/FIREFOX_ESR_115_9_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_0_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_10_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_1_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_2_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_4_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_6_X_RELBRANCH
- refs/heads/FIREFOX_ESR_68_8_X_RELBRANCH
- refs/heads/FIREFOX_ESR_78_0_X_RELBRANCH
- refs/heads/FIREFOX_ESR_78_10_X_RELBRANCH
- refs/heads/FIREFOX_ESR_78_3_X_RELBRANCH
- refs/heads/FIREFOX_ESR_78_4_X_RELBRANCH
- refs/heads/FIREFOX_ESR_78_6_X_RELBRANCH
- refs/heads/FIREFOX_ESR_78_7_X_RELBRANCH
- refs/heads/FIREFOX_ESR_91_0_X_RELBRANCH
- refs/heads/FIREFOX_ESR_91_4_X_RELBRANCH
- refs/heads/FIREFOX_ESR_91_5_X_RELBRANCH
- refs/heads/FIREFOX_ESR_91_6_X_RELBRANCH
- refs/heads/FIREFOX_ESR_91_7_X_RELBRANCH
- refs/heads/FIREFOX_ESR_91_9_X_RELBRANCH
- refs/heads/GECKO1001_2012020805_RELBRANCH
- refs/heads/GECKO1002_2012021522_RELBRANCH
- refs/heads/GECKO100_2011122113_RELBRANCH
- refs/heads/GECKO100_2011122805_RELBRANCH
- refs/heads/GECKO100_2012010318_RELBRANCH
- refs/heads/GECKO100_2012010410_RELBRANCH
- refs/heads/GECKO100_2012011108_RELBRANCH
- refs/heads/GECKO100_2012011807_RELBRANCH
- refs/heads/GECKO100_2012012323_RELBRANCH
- refs/heads/GECKO100_2012012901_RELBRANCH
- refs/heads/GECKO110_2012020115_RELBRANCH
- refs/heads/GECKO110_2012020801_RELBRANCH
- refs/heads/GECKO110_2012021420_RELBRANCH
- refs/heads/GECKO110_2012021522_RELBRANCH
- refs/heads/GECKO110_2012022207_RELBRANCH
- refs/heads/GECKO110_2012022820_RELBRANCH
- refs/heads/GECKO110_2012030517_RELBRANCH
- refs/heads/GECKO110_2012030815_RELBRANCH
- refs/heads/GECKO110_2012030912_RELBRANCH
- refs/heads/GECKO110_2012031017_RELBRANCH
- refs/heads/GECKO110_2012031218_RELBRANCH
- refs/heads/GECKO120_2012031407_RELBRANCH
- refs/heads/GECKO120_2012031419_RELBRANCH
- refs/heads/GECKO120_2012032021_RELBRANCH
- refs/heads/GECKO120_2012032804_RELBRANCH
- refs/heads/GECKO120_2012040320_RELBRANCH
- refs/heads/GECKO120_2012041106_RELBRANCH
- refs/heads/GECKO120_2012041716_RELBRANCH
- refs/heads/GECKO120_2012042014_RELBRANCH
- refs/heads/GECKO1301_2012061411_RELBRANCH
- refs/heads/GECKO1302_2012062310_RELBRANCH
- refs/heads/GECKO130_2012042512_RELBRANCH
- refs/heads/GECKO130_2012050119_RELBRANCH
- refs/heads/GECKO130_2012050817_RELBRANCH
- refs/heads/GECKO130_2012051611_RELBRANCH
- refs/heads/GECKO130_2012052216_RELBRANCH
- refs/heads/GECKO130_2012052311_RELBRANCH
- refs/heads/GECKO130_2012052815_RELBRANCH
- refs/heads/GECKO130_2012053115_RELBRANCH
- refs/heads/GECKO130_2012060104_RELBRANCH
- refs/heads/GECKO1401_2012071313_RELBRANCH
- refs/heads/GECKO140_2012060421_RELBRANCH
- refs/heads/GECKO140_2012060511_RELBRANCH
- refs/heads/GECKO140_2012061213_RELBRANCH
- refs/heads/GECKO140_2012061216_RELBRANCH
- refs/heads/GECKO140_2012061918_RELBRANCH
- refs/heads/GECKO140_2012061920_RELBRANCH
- refs/heads/GECKO140_2012062401_RELBRANCH
- refs/heads/GECKO140_2012062805_RELBRANCH
- refs/heads/GECKO140_2012070408_RELBRANCH
- refs/heads/GECKO140_2012070409_RELBRANCH
- refs/heads/GECKO140_2012071012_RELBRANCH
- refs/heads/GECKO140_2012071119_RELBRANCH
- refs/heads/GECKO140_2012071314_RELBRANCH
- refs/heads/GECKO150_2012071710_RELBRANCH
- refs/heads/GECKO150_2012071711_RELBRANCH
- refs/heads/GECKO150_2012072419_RELBRANCH
- refs/heads/GECKO150_2012073114_RELBRANCH
- refs/heads/GECKO150_2012073115_RELBRANCH
- refs/heads/GECKO150_2012080812_RELBRANCH
- refs/heads/GECKO150_2012080818_RELBRANCH
- refs/heads/GECKO150_2012081422_RELBRANCH
- refs/heads/GECKO150_2012081508_RELBRANCH
- refs/heads/GECKO150_2012082116_RELBRANCH
- refs/heads/GECKO150_2012082118_RELBRANCH
- refs/heads/GECKO150_2012082415_RELBRANCH
- refs/heads/GECKO150_2012082417_RELBRANCH
- refs/heads/GECKO1601_2012101014_RELBRANCH
- refs/heads/GECKO1602_2012102407_RELBRANCH
- refs/heads/GECKO160_2012082808_RELBRANCH
- refs/heads/GECKO160_2012082817_RELBRANCH
- refs/heads/GECKO160_2012090412_RELBRANCH
- refs/heads/GECKO160_2012090515_RELBRANCH
- refs/heads/GECKO160_2012091123_RELBRANCH
- refs/heads/GECKO160_2012091906_RELBRANCH
- refs/heads/GECKO160_2012092515_RELBRANCH
- refs/heads/GECKO160_2012092520_RELBRANCH
- refs/heads/GECKO160_2012100207_RELBRANCH
- refs/heads/GECKO160_2012100209_RELBRANCH
- refs/heads/GECKO160_2012100513_RELBRANCH
- refs/heads/GECKO160_2012100515_RELBRANCH
- refs/heads/GECKO1701_2013010313_RELBRANCH
- refs/heads/GECKO170_2012100914_RELBRANCH
- refs/heads/GECKO170_2012101014_RELBRANCH
- refs/heads/GECKO170_2012101016_RELBRANCH
- refs/heads/GECKO170_2012101707_RELBRANCH
- refs/heads/GECKO170_2012102312_RELBRANCH
- refs/heads/GECKO170_2012103012_RELBRANCH
- refs/heads/GECKO170_2012103106_RELBRANCH
- refs/heads/GECKO170_2012110619_RELBRANCH
- refs/heads/GECKO170_2012111306_RELBRANCH
- refs/heads/GECKO170_2012111612_RELBRANCH
- refs/heads/GECKO170_2012111918_RELBRANCH
- refs/heads/GECKO1801_2013011610_RELBRANCH
- refs/heads/GECKO1802_2013020109_RELBRANCH
- refs/heads/GECKO180_2012112110_RELBRANCH
- refs/heads/GECKO180_2012112808_RELBRANCH
- refs/heads/GECKO180_2012112816_RELBRANCH
- refs/heads/GECKO180_2012120508_RELBRANCH
- refs/heads/GECKO180_2012121210_RELBRANCH
- refs/heads/GECKO180_2012121910_RELBRANCH
- refs/heads/GECKO180_2012122710_RELBRANCH
- refs/heads/GECKO180_2012123109_RELBRANCH
- refs/heads/GECKO180_2013010417_RELBRANCH
- refs/heads/GECKO1901_2013022619_RELBRANCH
- refs/heads/GECKO1902_2013030705_RELBRANCH
- refs/heads/GECKO190_2013010812_RELBRANCH
- refs/heads/GECKO190_2013010816_RELBRANCH
- refs/heads/GECKO190_2013010913_RELBRANCH
- refs/heads/GECKO190_2013011610_RELBRANCH
- refs/heads/GECKO190_2013011709_RELBRANCH
- refs/heads/GECKO190_2013012311_RELBRANCH
- refs/heads/GECKO190_2013013010_RELBRANCH
- refs/heads/GECKO190_2013020611_RELBRANCH
- refs/heads/GECKO190_2013021211_RELBRANCH
- refs/heads/GECKO190_2013021515_RELBRANCH
- refs/heads/GECKO2001_2013040922_RELBRANCH
- refs/heads/GECKO200_2013022008_RELBRANCH
- refs/heads/GECKO200_2013022013_RELBRANCH
- refs/heads/GECKO200_2013032617_RELBRANCH
- refs/heads/GECKO201_2011041321_RELBRANCH
- refs/heads/GECKO210_2013050704_RELBRANCH
- refs/heads/GECKO210_2013051114_RELBRANCH
- refs/heads/GECKO210_2013051217_RELBRANCH
- refs/heads/GECKO220_2013061806_RELBRANCH
- refs/heads/GECKO220_2013061915_RELBRANCH
- refs/heads/GECKO2301_2013081409_RELBRANCH
- refs/heads/GECKO2301_2013081518_RELBRANCH
- refs/heads/GECKO230_2013073013_RELBRANCH
- refs/heads/GECKO230_2013080122_RELBRANCH
- refs/heads/GECKO240_2013091018_RELBRANCH
- refs/heads/GECKO240esr_2013091022_RELBRANCH
- refs/heads/GECKO2411esr_2013111803_RELBRANCH
- refs/heads/GECKO2420esr_2013120417_RELBRANCH
- refs/heads/GECKO2420esr_2013120520_RELBRANCH
- refs/heads/GECKO2430esr_2014012816_RELBRANCH
- refs/heads/GECKO2430esr_2014013111_RELBRANCH
- refs/heads/GECKO2440esr_2014031511_RELBRANCH
- refs/heads/GECKO2450esr_2014042118_RELBRANCH
- refs/heads/GECKO2460esr_2014060313_RELBRANCH
- refs/heads/GECKO2460esr_2014060920_RELBRANCH
- refs/heads/GECKO2470esr_2014071418_RELBRANCH
- refs/heads/GECKO2480esr_2014082508_RELBRANCH
- refs/heads/GECKO2481esr_2014092322_RELBRANCH
- refs/heads/GECKO2501_2013111218_RELBRANCH
- refs/heads/GECKO250_2013102121_RELBRANCH
- refs/heads/GECKO250_2013102300_RELBRANCH
- refs/heads/GECKO250_2013102517_RELBRANCH
- refs/heads/GECKO260_2013120223_RELBRANCH
- refs/heads/GECKO260_2013120510_RELBRANCH
- refs/heads/GECKO2701_2014021215_RELBRANCH
- refs/heads/GECKO270_2014012722_RELBRANCH
- refs/heads/GECKO280_2014031020_RELBRANCH
- refs/heads/GECKO280_2014031500_RELBRANCH
- refs/heads/GECKO2901_2014050600_RELBRANCH
- refs/heads/GECKO2901_2014050617_RELBRANCH
- refs/heads/GECKO290_2014042200_RELBRANCH
- refs/heads/GECKO300_2014060316_RELBRANCH
- refs/heads/GECKO300_2014060520_RELBRANCH
- refs/heads/GECKO310_2014071417_RELBRANCH
- refs/heads/GECKO310_2014071621_RELBRANCH
- refs/heads/GECKO310esr_2014071418_RELBRANCH
- refs/heads/GECKO310esr_2014071715_RELBRANCH
- refs/heads/GECKO3110esr_2014082508_RELBRANCH
- refs/heads/GECKO3111esr_2014092321_RELBRANCH
- refs/heads/GECKO3120esr_2014100702_RELBRANCH
- refs/heads/GECKO3120esr_2014101105_RELBRANCH
- refs/heads/GECKO3120esr_2014101110_RELBRANCH
- refs/heads/GECKO3121esr_2014110314_RELBRANCH
- refs/heads/GECKO3130esr_2014112501_RELBRANCH
- refs/heads/GECKO3130esr_2014112505_RELBRANCH
- refs/heads/GECKO3140esr_2015010523_RELBRANCH
- refs/heads/GECKO3150esr_2015021614_RELBRANCH
- refs/heads/GECKO3150esr_2015021713_RELBRANCH
- refs/heads/GECKO3160esr_2015032414_RELBRANCH
- refs/heads/GECKO3160esr_2015032523_RELBRANCH
- refs/heads/GECKO3170esr_2015050415_RELBRANCH
- refs/heads/GECKO3170esr_2015050422_RELBRANCH
- refs/heads/GECKO3180esr_2015062417_RELBRANCH
- refs/heads/GECKO3201_2014091023_RELBRANCH
- refs/heads/GECKO3201_2014091117_RELBRANCH
- refs/heads/GECKO3202_2014091722_RELBRANCH
- refs/heads/GECKO3203_2014092320_RELBRANCH
- refs/heads/GECKO320_2014082522_RELBRANCH
- refs/heads/GECKO330_2014100710_RELBRANCH
- refs/heads/GECKO330_2014101104_RELBRANCH
- refs/heads/GECKO3311_2014111317_RELBRANCH
- refs/heads/GECKO331_2014102917_RELBRANCH
- refs/heads/GECKO331_2014103013_RELBRANCH
- refs/heads/GECKO331_2014110614_RELBRANCH
- refs/heads/GECKO3405_2014112606_RELBRANCH
- refs/heads/GECKO340_2014112423_RELBRANCH
- refs/heads/GECKO340_2014112520_RELBRANCH
- refs/heads/GECKO340_2014112606_RELBRANCH
- refs/heads/GECKO3501_2015012300_RELBRANCH
- refs/heads/GECKO350_2015010523_RELBRANCH
- refs/heads/GECKO350_2015010702_RELBRANCH
- refs/heads/GECKO350_2015010823_RELBRANCH
- refs/heads/GECKO3601_2015030416_RELBRANCH
- refs/heads/GECKO3601_2015030504_RELBRANCH
- refs/heads/GECKO3603_2015031922_RELBRANCH
- refs/heads/GECKO3604_2015032022_RELBRANCH
- refs/heads/GECKO360_2015021920_RELBRANCH
- refs/heads/GECKO360_2015022302_RELBRANCH
- refs/heads/GECKO3701_2015040222_RELBRANCH
- refs/heads/GECKO3702_2015041516_RELBRANCH
- refs/heads/GECKO370_2015032422_RELBRANCH
- refs/heads/GECKO370_2015032621_RELBRANCH
- refs/heads/GECKO3805_2015052119_RELBRANCH
- refs/heads/GECKO3805_2015052120_RELBRANCH
- refs/heads/GECKO3805_2015052516_RELBRANCH
- refs/heads/GECKO3806_2015060512_RELBRANCH
- refs/heads/GECKO380_2015050317_RELBRANCH
- refs/heads/GECKO380_2015050320_RELBRANCH
- refs/heads/GECKO380esr_2015050513_RELBRANCH
- refs/heads/GECKO3810esr_2015062417_RELBRANCH
- refs/heads/GECKO3810esr_2015070616_RELBRANCH
- refs/heads/GECKO3820esr_2015080322_RELBRANCH
- refs/heads/GECKO3820esr_2015080613_RELBRANCH
- refs/heads/GECKO3830esr_2015091419_RELBRANCH
- refs/heads/GECKO3830esr_2015091612_RELBRANCH
- refs/heads/GECKO3840esr_2015102712_RELBRANCH
- refs/heads/GECKO3840esr_2015102720_RELBRANCH
- refs/heads/GECKO3850esr_2015121010_RELBRANCH
- refs/heads/GECKO3850esr_2015121418_RELBRANCH
- refs/heads/GECKO3851esr_2015121812_RELBRANCH
- refs/heads/GECKO3852esr_2015122118_RELBRANCH
- refs/heads/GECKO3860esr_2016012100_RELBRANCH
- refs/heads/GECKO3870esr_2016030220_RELBRANCH
- refs/heads/GECKO3871esr_2016031517_RELBRANCH
- refs/heads/GECKO3880esr_2016042017_RELBRANCH
- refs/heads/GECKO390_2015062220_RELBRANCH
- refs/heads/GECKO390_2015062418_RELBRANCH
- refs/heads/GECKO390_2015062614_RELBRANCH
- refs/heads/GECKO390_2015063018_RELBRANCH
- refs/heads/GECKO4001_2015081122_RELBRANCH
- refs/heads/GECKO4002_2015081219_RELBRANCH
- refs/heads/GECKO4003_2015082605_RELBRANCH
- refs/heads/GECKO400_2015080313_RELBRANCH
- refs/heads/GECKO400_2015080415_RELBRANCH
- refs/heads/GECKO400_2015080613_RELBRANCH
- refs/heads/GECKO400_2015080618_RELBRANCH
- refs/heads/GECKO400_2015080711_RELBRANCH
- refs/heads/GECKO4101_2015092818_RELBRANCH
- refs/heads/GECKO4101_2015092917_RELBRANCH
- refs/heads/GECKO4102_2015101322_RELBRANCH
- refs/heads/GECKO4102_2015101417_RELBRANCH
- refs/heads/GECKO410_2015091421_RELBRANCH
- refs/heads/GECKO410_2015091623_RELBRANCH
- refs/heads/GECKO410_2015091718_RELBRANCH
- refs/heads/GECKO420_2015102619_RELBRANCH
- refs/heads/GECKO420_2015102918_RELBRANCH
- refs/heads/GECKO4301_2015121620_RELBRANCH
- refs/heads/GECKO4302_2015122116_RELBRANCH
- refs/heads/GECKO4303_2015122316_RELBRANCH
- refs/heads/GECKO4304_2016010417_RELBRANCH
- refs/heads/GECKO4304_2016010515_RELBRANCH
- refs/heads/GECKO4304_2016010519_RELBRANCH
- refs/heads/GECKO430_2015120812_RELBRANCH
- refs/heads/GECKO4401_2016020419_RELBRANCH
- refs/heads/GECKO4401_2016020518_RELBRANCH
- refs/heads/GECKO4402_2016020915_RELBRANCH
- refs/heads/GECKO4402_2016020917_RELBRANCH
- refs/heads/GECKO4402_2016021018_RELBRANCH
- refs/heads/GECKO440_2016011817_RELBRANCH
- refs/heads/GECKO440_2016012018_RELBRANCH
- refs/heads/GECKO440_2016012318_RELBRANCH
- refs/heads/GECKO4501_2016031518_RELBRANCH
- refs/heads/GECKO4501esr_2016031518_RELBRANCH
- refs/heads/GECKO4501esr_2016031618_RELBRANCH
- refs/heads/GECKO4502_2016040719_RELBRANCH
- refs/heads/GECKO4502esr_2016041116_RELBRANCH
- refs/heads/GECKO450_2016030103_RELBRANCH
- refs/heads/GECKO450_2016030316_RELBRANCH
- refs/heads/GECKO450esr_2016030316_RELBRANCH
- refs/heads/GECKO450esr_2016030414_RELBRANCH
- refs/heads/GECKO4510esr_2016042017_RELBRANCH
- refs/heads/GECKO4511esr_2016050218_RELBRANCH
- refs/heads/GECKO4520esr_2016060214_RELBRANCH
- refs/heads/GECKO501_2011070717_RELBRANCH
- refs/heads/GECKO50_2011051718_RELBRANCH
- refs/heads/GECKO50_2011052708_RELBRANCH
- refs/heads/GECKO50_2011060309_RELBRANCH
- refs/heads/GECKO50_2011060814_RELBRANCH
- refs/heads/GECKO50_2011061316_RELBRANCH
- refs/heads/GECKO50_2011061416_RELBRANCH
- refs/heads/GECKO50_2011061514_RELBRANCH
- refs/heads/GECKO601_2011083006_RELBRANCH
- refs/heads/GECKO602_2011083109_RELBRANCH
- refs/heads/GECKO60_2011070520_RELBRANCH
- refs/heads/GECKO60_2011071316_RELBRANCH
- refs/heads/GECKO60_2011072110_RELBRANCH
- refs/heads/GECKO60_2011072114_RELBRANCH
- refs/heads/GECKO60_2011072907_RELBRANCH
- refs/heads/GECKO60_2011080402_RELBRANCH
- refs/heads/GECKO60_2011081114_RELBRANCH
- refs/heads/GECKO701_2011092812_RELBRANCH
- refs/heads/GECKO70_2011081615_RELBRANCH
- refs/heads/GECKO70_2011082416_RELBRANCH
- refs/heads/GECKO70_2011083009_RELBRANCH
- refs/heads/GECKO70_2011083111_RELBRANCH
- refs/heads/GECKO70_2011090812_RELBRANCH
- refs/heads/GECKO70_2011091608_RELBRANCH
- refs/heads/GECKO70_2011092208_RELBRANCH
- refs/heads/GECKO80_2011092805_RELBRANCH
- refs/heads/GECKO80_2011100518_RELBRANCH
- refs/heads/GECKO80_2011101118_RELBRANCH
- refs/heads/GECKO80_2011101907_RELBRANCH
- refs/heads/GECKO80_2011102619_RELBRANCH
- refs/heads/GECKO80_2011103118_RELBRANCH
- refs/heads/GECKO80_2011110416_RELBRANCH
- refs/heads/GECKO901_2011122016_RELBRANCH
- refs/heads/GECKO90_2011110909_RELBRANCH
- refs/heads/GECKO90_2011110911_RELBRANCH
- refs/heads/GECKO90_2011111609_RELBRANCH
- refs/heads/GECKO90_2011112217_RELBRANCH
- refs/heads/GECKO90_2011113005_RELBRANCH
- refs/heads/GECKO90_2011120622_RELBRANCH
- refs/heads/GECKO90_2011121217_RELBRANCH
- refs/heads/GECKO90_2011121613_RELBRANCH
- refs/heads/MOBILE1001_2012020805_RELBRANCH
- refs/heads/MOBILE1002_2012021522_RELBRANCH
- refs/heads/MOBILE100_2011122112_RELBRANCH
- refs/heads/MOBILE100_2011122805_RELBRANCH
- refs/heads/MOBILE100_2012010318_RELBRANCH
- refs/heads/MOBILE100_2012010410_RELBRANCH
- refs/heads/MOBILE100_2012011108_RELBRANCH
- refs/heads/MOBILE100_2012011807_RELBRANCH
- refs/heads/MOBILE100_2012012323_RELBRANCH
- refs/heads/MOBILE100_2012012901_RELBRANCH
- refs/heads/MOBILE110_2012020115_RELBRANCH
- refs/heads/MOBILE110_2012020801_RELBRANCH
- refs/heads/MOBILE110_2012021420_RELBRANCH
- refs/heads/MOBILE110_2012021522_RELBRANCH
- refs/heads/MOBILE110_2012022207_RELBRANCH
- refs/heads/MOBILE110_2012022820_RELBRANCH
- refs/heads/MOBILE110_2012030517_RELBRANCH
- refs/heads/MOBILE120_2012031407_RELBRANCH
- refs/heads/MOBILE120_2012031419_RELBRANCH
- refs/heads/MOBILE120_2012032021_RELBRANCH
- refs/heads/MOBILE120_2012032804_RELBRANCH
- refs/heads/MOBILE120_2012040320_RELBRANCH
- refs/heads/MOBILE120_2012041106_RELBRANCH
- refs/heads/MOBILE120_2012041716_RELBRANCH
- refs/heads/MOBILE130_2012042512_RELBRANCH
- refs/heads/MOBILE130_2012042709_RELBRANCH
- refs/heads/MOBILE130_2012050119_RELBRANCH
- refs/heads/MOBILE130_2012050817_RELBRANCH
- refs/heads/MOBILE1401_2012071313_RELBRANCH
- refs/heads/MOBILE1401_2012071316_RELBRANCH
- refs/heads/MOBILE1402_2012080109_RELBRANCH
- refs/heads/MOBILE1402_2012080617_RELBRANCH
- refs/heads/MOBILE140_2012060523_RELBRANCH
- refs/heads/MOBILE140_2012061216_RELBRANCH
- refs/heads/MOBILE140_2012061918_RELBRANCH
- refs/heads/MOBILE140_2012062805_RELBRANCH
- refs/heads/MOBILE140_2012062810_RELBRANCH
- refs/heads/MOBILE140_2012070414_RELBRANCH
- refs/heads/MOBILE140_2012071012_RELBRANCH
- refs/heads/MOBILE1501_2012090514_RELBRANCH
- refs/heads/MOBILE1501_2012090620_RELBRANCH
- refs/heads/MOBILE150_2012071710_RELBRANCH
- refs/heads/MOBILE150_2012072419_RELBRANCH
- refs/heads/MOBILE150_2012073114_RELBRANCH
- refs/heads/MOBILE150_2012080812_RELBRANCH
- refs/heads/MOBILE150_2012081422_RELBRANCH
- refs/heads/MOBILE150_2012082116_RELBRANCH
- refs/heads/MOBILE150_2012082314_RELBRANCH
- refs/heads/MOBILE150_2012082415_RELBRANCH
- refs/heads/MOBILE1601_2012101014_RELBRANCH
- refs/heads/MOBILE1602_2012102407_RELBRANCH
- refs/heads/MOBILE160_2012082808_RELBRANCH
- refs/heads/MOBILE160_2012090412_RELBRANCH
- refs/heads/MOBILE160_2012091123_RELBRANCH
- refs/heads/MOBILE160_2012091906_RELBRANCH
- refs/heads/MOBILE160_2012092520_RELBRANCH
- refs/heads/MOBILE160_2012100207_RELBRANCH
- refs/heads/MOBILE160_2012100515_RELBRANCH
- refs/heads/MOBILE1701_2012112820_RELBRANCH
- refs/heads/MOBILE170_2012100914_RELBRANCH
- refs/heads/MOBILE170_2012101021_RELBRANCH
- refs/heads/MOBILE170_2012101707_RELBRANCH
- refs/heads/MOBILE170_2012102312_RELBRANCH
- refs/heads/MOBILE170_2012103106_RELBRANCH
- refs/heads/MOBILE170_2012110619_RELBRANCH
- refs/heads/MOBILE170_2012111306_RELBRANCH
- refs/heads/MOBILE170_2012111605_RELBRANCH
- refs/heads/MOBILE170_2012111611_RELBRANCH
- refs/heads/MOBILE1802_2013020621_RELBRANCH
- refs/heads/MOBILE180_2012112113_RELBRANCH
- refs/heads/MOBILE180_2012112808_RELBRANCH
- refs/heads/MOBILE180_2012120508_RELBRANCH
- refs/heads/MOBILE180_2012121210_RELBRANCH
- refs/heads/MOBILE180_2012121317_RELBRANCH
- refs/heads/MOBILE180_2012121910_RELBRANCH
- refs/heads/MOBILE180_2012122710_RELBRANCH
- refs/heads/MOBILE180_2012123109_RELBRANCH
- refs/heads/MOBILE180_2013010418_RELBRANCH
- refs/heads/MOBILE1901_2013030614_RELBRANCH
- refs/heads/MOBILE1902_2013030705_RELBRANCH
- refs/heads/MOBILE190_2013010812_RELBRANCH
- refs/heads/MOBILE190_2013010816_RELBRANCH
- refs/heads/MOBILE190_2013011610_RELBRANCH
- refs/heads/MOBILE190_2013012311_RELBRANCH
- refs/heads/MOBILE190_2013013010_RELBRANCH
- refs/heads/MOBILE190_2013020611_RELBRANCH
- refs/heads/MOBILE190_2013020621_RELBRANCH
- refs/heads/MOBILE190_2013021211_RELBRANCH
- refs/heads/MOBILE190_2013021515_RELBRANCH
- refs/heads/MOBILE2001_2013041018_RELBRANCH
- refs/heads/MOBILE200_2013022008_RELBRANCH
- refs/heads/MOBILE200_2013022119_RELBRANCH
- refs/heads/MOBILE200_2013022215_RELBRANCH
- refs/heads/MOBILE200_2013032617_RELBRANCH
- refs/heads/MOBILE210_2013050704_RELBRANCH
- refs/heads/MOBILE210_2013050901_RELBRANCH
- refs/heads/MOBILE220_2013061806_RELBRANCH
- refs/heads/MOBILE230_2013073014_RELBRANCH
- refs/heads/MOBILE240_2013091115_RELBRANCH
- refs/heads/MOBILE2501_2013111218_RELBRANCH
- refs/heads/MOBILE250_2013102121_RELBRANCH
- refs/heads/MOBILE250_2013102300_RELBRANCH
- refs/heads/MOBILE250_2013102517_RELBRANCH
- refs/heads/MOBILE2601_2013121917_RELBRANCH
- refs/heads/MOBILE2601_2013121920_RELBRANCH
- refs/heads/MOBILE260_2013120223_RELBRANCH
- refs/heads/MOBILE260_2013120510_RELBRANCH
- refs/heads/MOBILE270_2014012816_RELBRANCH
- refs/heads/MOBILE2801_2014032118_RELBRANCH
- refs/heads/MOBILE280_2014031500_RELBRANCH
- refs/heads/MOBILE2901_2014050600_RELBRANCH
- refs/heads/MOBILE290_2014042416_RELBRANCH
- refs/heads/MOBILE300_2014060520_RELBRANCH
- refs/heads/MOBILE310_2014071714_RELBRANCH
- refs/heads/MOBILE3201_2014090921_RELBRANCH
- refs/heads/MOBILE3203_2014092320_RELBRANCH
- refs/heads/MOBILE320_2014082615_RELBRANCH
- refs/heads/MOBILE330_2014100810_RELBRANCH
- refs/heads/MOBILE330_2014101104_RELBRANCH
- refs/heads/MOBILE331_2014110511_RELBRANCH
- refs/heads/MOBILE331_2014110613_RELBRANCH
- refs/heads/MOBILE3401_2014121722_RELBRANCH
- refs/heads/MOBILE3401_2014121819_RELBRANCH
- refs/heads/MOBILE340_2014112423_RELBRANCH
- refs/heads/MOBILE340_2014112520_RELBRANCH
- refs/heads/MOBILE340_2014112618_RELBRANCH
- refs/heads/MOBILE3501_2015020504_RELBRANCH
- refs/heads/MOBILE350_2015010823_RELBRANCH
- refs/heads/MOBILE3601_2015030417_RELBRANCH
- refs/heads/MOBILE3601_2015030509_RELBRANCH
- refs/heads/MOBILE3602_2015031211_RELBRANCH
- refs/heads/MOBILE3602_2015031403_RELBRANCH
- refs/heads/MOBILE3603_2015031922_RELBRANCH
- refs/heads/MOBILE3604_2015032022_RELBRANCH
- refs/heads/MOBILE360_2015021920_RELBRANCH
- refs/heads/MOBILE360_2015022513_RELBRANCH
- refs/heads/MOBILE3701_2015040222_RELBRANCH
- refs/heads/MOBILE3702_2015041320_RELBRANCH
- refs/heads/MOBILE370_2015032520_RELBRANCH
- refs/heads/MOBILE3805_2015052804_RELBRANCH
- refs/heads/MOBILE3901_2015070520_RELBRANCH
- refs/heads/MOBILE3901_2015070622_RELBRANCH
- refs/heads/MOBILE3902_2015071316_RELBRANCH
- refs/heads/MOBILE390_2015062418_RELBRANCH
- refs/heads/MOBILE390_2015062601_RELBRANCH
- refs/heads/MOBILE4003_2015082703_RELBRANCH
- refs/heads/MOBILE400_2015080510_RELBRANCH
- refs/heads/MOBILE4102_2015101322_RELBRANCH
- refs/heads/MOBILE4102_2015101417_RELBRANCH
- refs/heads/MOBILE410_2015091517_RELBRANCH
- refs/heads/MOBILE410_2015091623_RELBRANCH
- refs/heads/MOBILE410_2015091718_RELBRANCH
- refs/heads/MOBILE4201_2015111905_RELBRANCH
- refs/heads/MOBILE4202_2015120112_RELBRANCH
- refs/heads/MOBILE420_2015102816_RELBRANCH
- refs/heads/MOBILE420_2015102820_RELBRANCH
- refs/heads/MOBILE420_2015102905_RELBRANCH
- refs/heads/MOBILE4301_2015121519_RELBRANCH
- refs/heads/MOBILE430_2015121011_RELBRANCH
- refs/heads/MOBILE430_2015121419_RELBRANCH
- refs/heads/MOBILE4402_2016020915_RELBRANCH
- refs/heads/MOBILE4402_2016020917_RELBRANCH
- refs/heads/MOBILE4402_2016020922_RELBRANCH
- refs/heads/MOBILE4402_2016021011_RELBRANCH
- refs/heads/MOBILE440_2016012018_RELBRANCH
- refs/heads/MOBILE4501_2016031519_RELBRANCH
- refs/heads/MOBILE4502_2016040719_RELBRANCH
- refs/heads/MOBILE450_2016030216_RELBRANCH
- refs/heads/MOBILE450_2016030304_RELBRANCH
- refs/heads/MOBILE450_2016030316_RELBRANCH
- refs/heads/MOBILE4601_2016050218_RELBRANCH
- refs/heads/MOBILE460_2016042213_RELBRANCH
- refs/heads/MOBILE470_2016060220_RELBRANCH
- refs/heads/MOBILE470_2016060422_RELBRANCH
- refs/heads/MOBILE4803_2016090208_RELBRANCH
- refs/heads/MOBILE480_2016072616_RELBRANCH
- refs/heads/MOBILE4902_2016101815_RELBRANCH
- refs/heads/MOBILE4902_2016101919_RELBRANCH
- refs/heads/MOBILE490_2016090808_RELBRANCH
- refs/heads/MOBILE490_2016091217_RELBRANCH
- refs/heads/MOBILE490_2016091613_RELBRANCH
- refs/heads/MOBILE5001_2016112401_RELBRANCH
- refs/heads/MOBILE5002_2016112921_RELBRANCH
- refs/heads/MOBILE500_2016110523_RELBRANCH
- refs/heads/MOBILE5010_2016120721_RELBRANCH
- refs/heads/MOBILE5010_2016120821_RELBRANCH
- refs/heads/MOBILE5102_2017020604_RELBRANCH
- refs/heads/MOBILE5103_2017020816_RELBRANCH
- refs/heads/MOBILE5104_2017021320_RELBRANCH
- refs/heads/MOBILE510_2017011707_RELBRANCH
- refs/heads/MOBILE510_2017011818_RELBRANCH
- refs/heads/MOBILE510_2017011915_RELBRANCH
- refs/heads/MOBILE5201_2017031701_RELBRANCH
- refs/heads/MOBILE5202_2017032405_RELBRANCH
- refs/heads/MOBILE520_2017030210_RELBRANCH
- refs/heads/MOBILE520_2017030217_RELBRANCH
- refs/heads/MOBILE520_2017030305_RELBRANCH
- refs/heads/MOBILE5301_2017041915_RELBRANCH
- refs/heads/MOBILE601_2011083008_RELBRANCH
- refs/heads/MOBILE602_2011083111_RELBRANCH
- refs/heads/MOBILE60_2011071316_RELBRANCH
- refs/heads/MOBILE60_2011072110_RELBRANCH
- refs/heads/MOBILE60_2011072114_RELBRANCH
- refs/heads/MOBILE60_2011072907_RELBRANCH
- refs/heads/MOBILE60_2011080402_RELBRANCH
- refs/heads/MOBILE60_2011081016_RELBRANCH
- refs/heads/MOBILE60_2011081116_RELBRANCH
- refs/heads/MOBILE701_2011092812_RELBRANCH
- refs/heads/MOBILE70_2011081614_RELBRANCH
- refs/heads/MOBILE70_2011082416_RELBRANCH
- refs/heads/MOBILE70_2011083009_RELBRANCH
- refs/heads/MOBILE70_2011083111_RELBRANCH
- refs/heads/MOBILE70_2011090812_RELBRANCH
- refs/heads/MOBILE70_2011091608_RELBRANCH
- refs/heads/MOBILE70_2011092210_RELBRANCH
- refs/heads/MOBILE80_2011092805_RELBRANCH
- refs/heads/MOBILE80_2011100517_RELBRANCH
- refs/heads/MOBILE80_2011101117_RELBRANCH
- refs/heads/MOBILE80_2011101907_RELBRANCH
- refs/heads/MOBILE80_2011102618_RELBRANCH
- refs/heads/MOBILE80_2011103117_RELBRANCH
- refs/heads/MOBILE80_2011110415_RELBRANCH
- refs/heads/MOBILE90_2011110909_RELBRANCH
- refs/heads/MOBILE90_2011111608_RELBRANCH
- refs/heads/MOBILE90_2011112218_RELBRANCH
- refs/heads/MOBILE90_2011113006_RELBRANCH
- refs/heads/MOBILE90_2011120622_RELBRANCH
- refs/heads/MOBILE90_2011121217_RELBRANCH
- refs/heads/MOBILE90_2011121612_RELBRANCH
- refs/heads/aurora
- refs/heads/b2g-inbound
- refs/heads/b2g-ota
- refs/heads/b2g18
- refs/heads/b2g18_v1_0_0
- refs/heads/b2g18_v1_0_1
- refs/heads/b2g18_v1_1_0_hd
- refs/heads/b2g26_v1_2
- refs/heads/b2g26_v1_2f
- refs/heads/b2g28_v1_3
- refs/heads/b2g28_v1_3t
- refs/heads/b2g30_v1_4
- refs/heads/b2g32_v2_0
- refs/heads/b2g32_v2_0m
- refs/heads/b2g34_v2_1
- refs/heads/b2g34_v2_1s
- refs/heads/b2g37_v2_2
- refs/heads/b2g37_v2_2r
- refs/heads/b2g44_v2_5
- refs/heads/beta
- refs/heads/esr102
- refs/heads/esr115
- refs/heads/esr128
- refs/heads/esr17
- refs/heads/esr24
- refs/heads/esr31
- refs/heads/esr38
- refs/heads/esr45
- refs/heads/esr52
- refs/heads/esr60
- refs/heads/esr68
- refs/heads/esr78
- refs/heads/esr91
- refs/heads/fx-team
- refs/heads/inbound
- refs/heads/loop-ser
- refs/heads/master
- refs/heads/mozilla-b2g26_v1_2
- refs/heads/release
- refs/heads/renovate/configure
- refs/heads/tiling
- refs/tags/B2G_1_0_0_20130115070201
- refs/tags/B2G_1_0_0_20130125190500
- refs/tags/B2G_1_0_1_20130213094222
- refs/tags/B2G_1_0_1_20130213094222_BASE
- refs/tags/B2G_1_0_1_20130217163900
- refs/tags/B2G_1_1_0_hd_20130530182315
- refs/tags/B2G_1_1_0_hd_20130530182315_BASE
- refs/tags/B2G_1_1_0_hd_20140203_MERGEDAY
- refs/tags/B2G_1_1_0_hd_20140317_MERGEDAY
- refs/tags/B2G_1_1_0_hd_20140428_MERGEDAY
- refs/tags/B2G_1_1_20140203_MERGEDAY
- refs/tags/B2G_1_1_20140317_MERGEDAY
- refs/tags/B2G_1_1_20140428_MERGEDAY
- refs/tags/B2G_1_2_20140203_MERGEDAY
- refs/tags/B2G_1_2_20140317_MERGEDAY
- refs/tags/B2G_1_2_20140428_MERGEDAY
- refs/tags/B2G_1_3T_20140317_MERGEDAY
- refs/tags/B2G_1_3T_20140428_MERGEDAY
- refs/tags/B2G_1_3T_20140609_MERGEDAY
- refs/tags/B2G_1_3T_20140721_MERGEDAY
- refs/tags/B2G_1_3T_20140902_MERGEDAY
- refs/tags/B2G_1_3T_20141013_MERGEDAY
- refs/tags/B2G_1_3_20140203_MERGEDAY
- refs/tags/B2G_1_3_20140317_MERGEDAY
- refs/tags/B2G_1_3_20140428_MERGEDAY
- refs/tags/B2G_1_3_20140609_MERGEDAY
- refs/tags/B2G_1_3_20140721_MERGEDAY
- refs/tags/B2G_1_3_20140902_MERGEDAY
- refs/tags/B2G_1_4_20140317_MERGEDAY
- refs/tags/B2G_1_4_20140428_MERGEDAY
- refs/tags/B2G_1_4_20140609_MERGEDAY
- refs/tags/B2G_1_4_20140721_MERGEDAY
- refs/tags/B2G_1_4_20140902_MERGEDAY
- refs/tags/B2G_1_4_20141013_MERGEDAY
- refs/tags/B2G_1_4_20150112_MERGEDAY
- refs/tags/B2G_1_4_20150223_MERGEDAY
- refs/tags/B2G_1_4_20150330_MERGEDAY
- refs/tags/B2G_1_4_20150511_MERGEDAY
- refs/tags/B2G_2_0M_END
- refs/tags/B2G_2_0_20140609_MERGEDAY
- refs/tags/B2G_2_0_20140721_MERGEDAY
- refs/tags/B2G_2_0_20140902_MERGEDAY
- refs/tags/B2G_2_0_20141013_MERGEDAY
- refs/tags/B2G_2_0_20150112_MERGEDAY
- refs/tags/B2G_2_0_20150223_MERGEDAY
- refs/tags/B2G_2_0_20150511_MERGEDAY
- refs/tags/B2G_2_0_20150629_MERGEDAY
- refs/tags/B2G_2_0_END
- refs/tags/B2G_2_1_20140902_MERGEDAY
- refs/tags/B2G_2_1_20141013_MERGEDAY
- refs/tags/B2G_2_1_20150112_MERGEDAY
- refs/tags/B2G_2_1_20150223_MERGEDAY
- refs/tags/B2G_2_1_20150511_MERGEDAY
- refs/tags/B2G_2_1_20150629_MERGEDAY
- refs/tags/B2G_2_1_END
- refs/tags/B2G_2_1s_20150223_MERGEDAY
- refs/tags/B2G_2_1s_20150511_MERGEDAY
- refs/tags/B2G_2_1s_20150629_MERGEDAY
- refs/tags/B2G_2_1s_20150810_MERGEDAY
- refs/tags/B2G_2_1s_END
- refs/tags/B2G_2_2_20150223_MERGEDAY
- refs/tags/B2G_2_2_20150511_MERGEDAY
- refs/tags/B2G_2_2_20150629_MERGEDAY
- refs/tags/B2G_2_2_20150810_MERGEDAY
- refs/tags/B2G_2_2_20150921_MERGEDAY
- refs/tags/B2G_2_2_20151029_MERGEDAY
- refs/tags/B2G_2_2_20151214_MERGEDAY
- refs/tags/B2G_2_2r_20150810_MERGEDAY
- refs/tags/B2G_2_2r_20150921_MERGEDAY
- refs/tags/B2G_2_2r_20151029_MERGEDAY
- refs/tags/B2G_2_2r_20151214_MERGEDAY
- refs/tags/B2G_2_5_20151214_MERGEDAY
- refs/tags/B2G_2_5_20160125_MERGEDAY
- refs/tags/RELEASE_BASE_20110811
- refs/tags/RELEASE_BASE_20110922
- refs/tags/RELEASE_BASE_20111104
- refs/tags/RELEASE_BASE_20111216
- refs/tags/RELEASE_BASE_20120128
- refs/tags/RELEASE_BASE_20120308
- refs/tags/RELEASE_BASE_20120420
- refs/tags/RELEASE_BASE_20120531
- refs/tags/RELEASE_BASE_20120713
- refs/tags/RELEASE_BASE_20120824
- refs/tags/RELEASE_BASE_20121005
- refs/tags/RELEASE_BASE_20121114
- refs/tags/RELEASE_BASE_20130103
- refs/tags/RELEASE_BASE_20130214
- refs/tags/RELEASE_BASE_20130326
- refs/tags/RELEASE_BASE_20130506
- refs/tags/RELEASE_BASE_20130617
- refs/tags/RELEASE_BASE_20130729
- refs/tags/RELEASE_BASE_20130909
- refs/tags/RELEASE_BASE_20131021
- refs/tags/RELEASE_BASE_20131202
- refs/tags/RELEASE_BASE_20140127
- refs/tags/RELEASE_BASE_20140310
- refs/tags/RELEASE_BASE_20140421
- refs/tags/RELEASE_BASE_20140602
No releases to show
Raw File
Take a new snapshot of a software origin
If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.
Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.![swh spinner](/static/img/swh-spinner.gif)
Processing "take a new snapshot" request ...
Permalinks
To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.
Tip revision: c034a5f1907fefabbe6cc8d49ea81d041e2ff60f authored by ffxbld on 09 November 2011, 19:31:44 UTC
Added tag FIREFOX_9_0b1_BUILD1 for changeset 31302afe89b3. CLOSED TREE a=release
Added tag FIREFOX_9_0b1_BUILD1 for changeset 31302afe89b3. CLOSED TREE a=release
Tip revision: c034a5f
utils.py
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is Mozilla build system.
#
# The Initial Developer of the Original Code is
# Mozilla Foundation.
# Portions created by the Initial Developer are Copyright (C) 2008
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Axel Hecht <axel@pike.org>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
'''Utility methods to be used by python build infrastructure.
'''
import os
import errno
import sys
import time
import stat
class LockFile(object):
'''LockFile is used by the lockFile method to hold the lock.
This object should not be used directly, but only through
the lockFile method below.
'''
def __init__(self, lockfile):
self.lockfile = lockfile
def __del__(self):
while True:
try:
os.remove(self.lockfile)
break
except OSError, e:
if e.errno == errno.EACCES:
# another process probably has the file open, we'll retry.
# just a short sleep since we want to drop the lock ASAP
# (but we need to let some other process close the file first)
time.sleep(0.1)
else:
# re-raise unknown errors
raise
def lockFile(lockfile, max_wait = 600):
'''Create and hold a lockfile of the given name, with the given timeout.
To release the lock, delete the returned object.
'''
while True:
try:
fd = os.open(lockfile, os.O_EXCL | os.O_RDWR | os.O_CREAT)
# we created the lockfile, so we're the owner
break
except OSError, e:
if e.errno == errno.EEXIST or \
(sys.platform == "win32" and e.errno == errno.EACCES):
pass
else:
# should not occur
raise
try:
# the lock file exists, try to stat it to get its age
# and read its contents to report the owner PID
f = open(lockfile, "r")
s = os.stat(lockfile)
except EnvironmentError, e:
if e.errno == errno.ENOENT or e.errno == errno.EACCES:
# we didn't create the lockfile, so it did exist, but it's
# gone now. Just try again
continue
sys.exit("%s exists but stat() failed: %s" %
(lockfile, e.strerror))
# we didn't create the lockfile and it's still there, check
# its age
now = int(time.time())
if now - s[stat.ST_MTIME] > max_wait:
pid = f.readline().rstrip()
sys.exit("%s has been locked for more than " \
"%d seconds (PID %s)" % (lockfile, max_wait,
pid))
# it's not been locked too long, wait a while and retry
f.close()
time.sleep(1)
# if we get here. we have the lockfile. Convert the os.open file
# descriptor into a Python file object and record our PID in it
f = os.fdopen(fd, "w")
f.write("%d\n" % os.getpid())
f.close()
return LockFile(lockfile)
class pushback_iter(object):
'''Utility iterator that can deal with pushed back elements.
This behaves like a regular iterable, just that you can call
iter.pushback(item)
to get the givem item as next item in the iteration.
'''
def __init__(self, iterable):
self.it = iter(iterable)
self.pushed_back = []
def __iter__(self):
return self
def __nonzero__(self):
if self.pushed_back:
return True
try:
self.pushed_back.insert(0, self.it.next())
except StopIteration:
return False
else:
return True
def next(self):
if self.pushed_back:
return self.pushed_back.pop()
return self.it.next()
def pushback(self, item):
self.pushed_back.append(item)