1*38e8c45fSAndroid Build Coastguard Worker#!/usr/bin/env python 2*38e8c45fSAndroid Build Coastguard Worker 3*38e8c45fSAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project 4*38e8c45fSAndroid Build Coastguard Worker# 5*38e8c45fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the 'License'); 6*38e8c45fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*38e8c45fSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*38e8c45fSAndroid Build Coastguard Worker# 9*38e8c45fSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*38e8c45fSAndroid Build Coastguard Worker# 11*38e8c45fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*38e8c45fSAndroid Build Coastguard Worker# distributed under the License is distributed on an 'AS IS' BASIS, 13*38e8c45fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*38e8c45fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*38e8c45fSAndroid Build Coastguard Worker# limitations under the License. 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Workerimport collections, sys 18*38e8c45fSAndroid Build Coastguard Worker 19*38e8c45fSAndroid Build Coastguard WorkerTYPES = { 20*38e8c45fSAndroid Build Coastguard Worker "AID_MEDIA_AUDIO": ["aac","aac","amr","awb","snd","flac","flac","mp3","mpga","mpega","mp2","m4a","aif","aiff","aifc","gsm","mka","m3u","wma","wax","ra","rm","ram","ra","pls","sd2","wav","ogg","oga"], 21*38e8c45fSAndroid Build Coastguard Worker "AID_MEDIA_VIDEO": ["3gpp","3gp","3gpp2","3g2","avi","dl","dif","dv","fli","m4v","ts","mpeg","mpg","mpe","mp4","vob","qt","mov","mxu","webm","lsf","lsx","mkv","mng","asf","asx","wm","wmv","wmx","wvx","movie","wrf"], 22*38e8c45fSAndroid Build Coastguard Worker "AID_MEDIA_IMAGE": ["bmp","gif","jpg","jpeg","jpe","pcx","png","svg","svgz","tiff","tif","wbmp","webp","dng","cr2","ras","art","jng","nef","nrw","orf","rw2","pef","psd","pnm","pbm","pgm","ppm","srw","arw","rgb","xbm","xpm","xwd"] 23*38e8c45fSAndroid Build Coastguard Worker} 24*38e8c45fSAndroid Build Coastguard Worker 25*38e8c45fSAndroid Build Coastguard Workerif "--rc" in sys.argv: 26*38e8c45fSAndroid Build Coastguard Worker print "on early-boot" 27*38e8c45fSAndroid Build Coastguard Worker print " mkdir /config/sdcardfs/extensions/1055" 28*38e8c45fSAndroid Build Coastguard Worker print " mkdir /config/sdcardfs/extensions/1056" 29*38e8c45fSAndroid Build Coastguard Worker print " mkdir /config/sdcardfs/extensions/1057" 30*38e8c45fSAndroid Build Coastguard Worker for gid, exts in TYPES.iteritems(): 31*38e8c45fSAndroid Build Coastguard Worker if gid is "AID_MEDIA_AUDIO": gid = "1055" 32*38e8c45fSAndroid Build Coastguard Worker if gid is "AID_MEDIA_VIDEO": gid = "1056" 33*38e8c45fSAndroid Build Coastguard Worker if gid is "AID_MEDIA_IMAGE": gid = "1057" 34*38e8c45fSAndroid Build Coastguard Worker for ext in exts: 35*38e8c45fSAndroid Build Coastguard Worker print " mkdir /config/sdcardfs/extensions/%s/%s" % (gid, ext) 36*38e8c45fSAndroid Build Coastguard Worker exit() 37*38e8c45fSAndroid Build Coastguard Worker 38*38e8c45fSAndroid Build Coastguard Workerprint """/* 39*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2017 The Android Open Source Project 40*38e8c45fSAndroid Build Coastguard Worker * 41*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 42*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 43*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 44*38e8c45fSAndroid Build Coastguard Worker * 45*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 46*38e8c45fSAndroid Build Coastguard Worker * 47*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 48*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 49*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 51*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 52*38e8c45fSAndroid Build Coastguard Worker */ 53*38e8c45fSAndroid Build Coastguard Worker 54*38e8c45fSAndroid Build Coastguard Worker/****************************************************************** 55*38e8c45fSAndroid Build Coastguard Worker * THIS CODE WAS GENERATED BY matchgen.py, DO NOT MODIFY DIRECTLY * 56*38e8c45fSAndroid Build Coastguard Worker ******************************************************************/ 57*38e8c45fSAndroid Build Coastguard Worker 58*38e8c45fSAndroid Build Coastguard Worker#include <private/android_filesystem_config.h> 59*38e8c45fSAndroid Build Coastguard Worker 60*38e8c45fSAndroid Build Coastguard Workerint MatchExtension(const char* ext) { 61*38e8c45fSAndroid Build Coastguard Worker""" 62*38e8c45fSAndroid Build Coastguard Worker 63*38e8c45fSAndroid Build Coastguard Workertrie = collections.defaultdict(lambda: collections.defaultdict(lambda: collections.defaultdict(lambda: collections.defaultdict(lambda: collections.defaultdict(lambda: collections.defaultdict(lambda: "")))))) 64*38e8c45fSAndroid Build Coastguard Worker 65*38e8c45fSAndroid Build Coastguard Workerfor t in TYPES: 66*38e8c45fSAndroid Build Coastguard Worker for v in TYPES[t]: 67*38e8c45fSAndroid Build Coastguard Worker v = v.lower() 68*38e8c45fSAndroid Build Coastguard Worker target = trie 69*38e8c45fSAndroid Build Coastguard Worker for c in v: 70*38e8c45fSAndroid Build Coastguard Worker target = target[c] 71*38e8c45fSAndroid Build Coastguard Worker target["\0"] = t 72*38e8c45fSAndroid Build Coastguard Worker 73*38e8c45fSAndroid Build Coastguard Workerdef dump(target, index): 74*38e8c45fSAndroid Build Coastguard Worker prefix = " " * (index + 1) 75*38e8c45fSAndroid Build Coastguard Worker print "%sswitch (ext[%d]) {" % (prefix, index) 76*38e8c45fSAndroid Build Coastguard Worker for k in sorted(target.keys()): 77*38e8c45fSAndroid Build Coastguard Worker if k == "\0": 78*38e8c45fSAndroid Build Coastguard Worker print "%scase '\\0': return %s;" % (prefix, target[k]) 79*38e8c45fSAndroid Build Coastguard Worker else: 80*38e8c45fSAndroid Build Coastguard Worker upper = k.upper() 81*38e8c45fSAndroid Build Coastguard Worker if k != upper: 82*38e8c45fSAndroid Build Coastguard Worker print "%scase '%s': case '%s':" % (prefix, k, upper) 83*38e8c45fSAndroid Build Coastguard Worker else: 84*38e8c45fSAndroid Build Coastguard Worker print "%scase '%s':" % (prefix, k) 85*38e8c45fSAndroid Build Coastguard Worker dump(target[k], index + 1) 86*38e8c45fSAndroid Build Coastguard Worker print "%s}" % (prefix) 87*38e8c45fSAndroid Build Coastguard Worker if index > 0: 88*38e8c45fSAndroid Build Coastguard Worker print "%sbreak;" % (prefix) 89*38e8c45fSAndroid Build Coastguard Worker 90*38e8c45fSAndroid Build Coastguard Workerdump(trie, 0) 91*38e8c45fSAndroid Build Coastguard Worker 92*38e8c45fSAndroid Build Coastguard Workerprint """ 93*38e8c45fSAndroid Build Coastguard Worker return 0; 94*38e8c45fSAndroid Build Coastguard Worker} 95*38e8c45fSAndroid Build Coastguard Worker""" 96