aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2001-06-13 20:36:52 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2001-06-13 20:36:52 +0000
commitb72ac40fe7c573f7e86517448a469a0dd8bb370b (patch)
tree7f6a7d6269bd373ed96f3f840b13f8fbe86e5399
parentf0035ced5e74bf8da8727815f402449318c26b69 (diff)
Version 0.1.9 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@332 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xfile.c57
-rwxr-xr-xinclude/asterisk/file.h3
-rwxr-xr-xsounds/vm-Family.gsm8
-rwxr-xr-xsounds/vm-Friends.gsm4
-rwxr-xr-xsounds/vm-INBOX.gsmbin0 -> 1716 bytes
-rwxr-xr-xsounds/vm-Old.gsmbin0 -> 1386 bytes
-rwxr-xr-xsounds/vm-Work.gsmbin0 -> 1485 bytes
-rwxr-xr-xsounds/vm-and.gsm6
-rwxr-xr-xsounds/vm-changeto.gsm8
-rwxr-xr-xsounds/vm-delete.gsmbin0 -> 3762 bytes
-rwxr-xr-xsounds/vm-first.gsmbin0 -> 1617 bytes
-rwxr-xr-xsounds/vm-for.gsmbin0 -> 1155 bytes
-rwxr-xr-xsounds/vm-helpexit.gsmbin0 -> 5445 bytes
-rwxr-xr-xsounds/vm-incorrect.gsmbin2442 -> 3927 bytes
-rwxr-xr-xsounds/vm-last.gsmbin0 -> 1089 bytes
-rwxr-xr-xsounds/vm-next.gsmbin0 -> 3993 bytes
-rwxr-xr-xsounds/vm-onefor.gsmbin0 -> 2178 bytes
-rwxr-xr-xsounds/vm-opts.gsmbin0 -> 11880 bytes
-rwxr-xr-xsounds/vm-press.gsmbin0 -> 1089 bytes
-rwxr-xr-xsounds/vm-prev.gsm6
-rwxr-xr-xsounds/vm-repeat.gsmbin0 -> 3465 bytes
-rwxr-xr-xsounds/vm-saved.gsm7
-rwxr-xr-xsounds/vm-savedto.gsmbin0 -> 2013 bytes
-rwxr-xr-xsounds/vm-savefolder.gsmbin0 -> 4092 bytes
-rwxr-xr-xsounds/vm-savemessage.gsmbin0 -> 3399 bytes
-rwxr-xr-xsounds/vm-tocancel.gsmbin0 -> 2607 bytes
-rwxr-xr-xsounds/vm-toforward.gsmbin0 -> 5313 bytes
-rwxr-xr-xsounds/vm-undelete.gsmbin0 -> 4092 bytes
28 files changed, 98 insertions, 1 deletions
diff --git a/file.c b/file.c
index e38a4afb5..1753f45b8 100755
--- a/file.c
+++ b/file.c
@@ -146,7 +146,7 @@ int ast_stopstream(struct ast_channel *tmp)
if (!tmp->stream)
return 0;
tmp->stream->fmt->close(tmp->stream);
- if (ast_set_write_format(tmp, tmp->oldwriteformat))
+ if (tmp->oldwriteformat && ast_set_write_format(tmp, tmp->oldwriteformat))
ast_log(LOG_WARNING, "Unable to restore format back to %d\n", tmp->oldwriteformat);
return 0;
}
@@ -192,6 +192,45 @@ int ast_writestream(struct ast_filestream *fs, struct ast_frame *f)
}
}
+static int copy(char *infile, char *outfile)
+{
+ int ifd;
+ int ofd;
+ int res;
+ int len;
+ char buf[4096];
+ if ((ifd = open(infile, O_RDONLY)) < 0) {
+ ast_log(LOG_WARNING, "Unable to open %s in read-only mode\n", infile);
+ return -1;
+ }
+ if ((ofd = open(outfile, O_WRONLY | O_TRUNC | O_CREAT, 0600)) < 0) {
+ ast_log(LOG_WARNING, "Unable to open %s in write-only mode\n", outfile);
+ close(ifd);
+ return -1;
+ }
+ do {
+ len = read(ifd, buf, sizeof(buf));
+ if (len < 0) {
+ ast_log(LOG_WARNING, "Read failed on %s: %s\n", infile, strerror(errno));
+ close(ifd);
+ close(ofd);
+ unlink(outfile);
+ }
+ if (len) {
+ res = write(ofd, buf, len);
+ if (res != len) {
+ ast_log(LOG_WARNING, "Write failed on %s (%d of %d): %s\n", outfile, res, len, strerror(errno));
+ close(ifd);
+ close(ofd);
+ unlink(outfile);
+ }
+ }
+ } while(len);
+ close(ifd);
+ close(ofd);
+ return 0;
+}
+
static char *build_filename(char *filename, char *ext)
{
char *fn;
@@ -210,6 +249,7 @@ static char *build_filename(char *filename, char *ext)
#define ACTION_DELETE 2
#define ACTION_RENAME 3
#define ACTION_OPEN 4
+#define ACTION_COPY 5
static int ast_filehelper(char *filename, char *filename2, char *fmt, int action)
{
@@ -265,6 +305,16 @@ static int ast_filehelper(char *filename, char *filename2, char *fmt, int action
} else
ast_log(LOG_WARNING, "Out of memory\n");
break;
+ case ACTION_COPY:
+ nfn = build_filename(filename2, ext);
+ if (nfn) {
+ res = copy(fn, nfn);
+ if (res)
+ ast_log(LOG_WARNING, "copy(%s,%s) failed: %s\n", fn, nfn, strerror(errno));
+ free(nfn);
+ } else
+ ast_log(LOG_WARNING, "Out of memory\n");
+ break;
case ACTION_OPEN:
if ((ret < 0) && ((chan->writeformat & f->format))) {
ret = open(fn, O_RDONLY);
@@ -343,6 +393,11 @@ int ast_filerename(char *filename, char *filename2, char *fmt)
return ast_filehelper(filename, filename2, fmt, ACTION_RENAME);
}
+int ast_filecopy(char *filename, char *filename2, char *fmt)
+{
+ return ast_filehelper(filename, filename2, fmt, ACTION_COPY);
+}
+
int ast_streamfile(struct ast_channel *chan, char *filename, char *preflang)
{
/* This is a fairly complex routine. Essentially we should do
diff --git a/include/asterisk/file.h b/include/asterisk/file.h
index 5e424358b..95c77f6b7 100755
--- a/include/asterisk/file.h
+++ b/include/asterisk/file.h
@@ -59,6 +59,9 @@ int ast_filerename(char *oldname, char *newname, char *fmt);
/* Delete a given file in a given format, or if fmt is NULL, then do so for all */
int ast_filedelete(char *filename, char *fmt);
+/* Copy a given file in a given format, or if fmt is NULL, then do so for all */
+int ast_filecopy(char *oldname, char *newname, char *fmt);
+
/* Wait for a stream to stop or for any one of a given digit to arrive, Returns
0 if the stream finishes, the character if it was interrupted, and -1 on error */
char ast_waitstream(struct ast_channel *c, char *breakon);
diff --git a/sounds/vm-Family.gsm b/sounds/vm-Family.gsm
new file mode 100755
index 000000000..0e64ea6be
--- /dev/null
+++ b/sounds/vm-Family.gsm
@@ -0,0 +1,8 @@
+جPbDUaȹDAǓHO ֝!:QbxmVկƢW@”a0v)qJ,[s֜G
+AȑaYbo\āil' i`Yd Zl훐ؒndF,~[g"أ5cnf9kFVcG$H<TI fYנ]Ab5B>a&ށ _Kקơl]Ţxv^Tw&I6עK[VDm`6ӁJ_Ƣ;h6FO~DŠ‹*NIJأZu<聖`{A$Yi8mXbn E|º\#d扞f6MͽV&ca[DV,&nTO$&SquoRZs
+sHFA]u
+lpu'eshوuG*rK7'sJԥxGc4LM;$brjsCNHHNW+^vI s*اy޵;^
+D{qLJhqF8Gr4{'nqj$Hqf'p($( ):֢rr
+I$F.zƳ[~X(fAžs#gܐc#dnM|ߣ!sMs|(#q$i{[̺ESq.q;W"l,jqC( qDS`ٮq䕹$qcOZ$Ƨwg=9Zq:뮉#aq&mq&eJcGV%2(֠;tsM UsS:0qe
+8"d<sώ%.DvsPܕFgf"ZbJmȥʘnUOtɘeasJE1
+[L:"5]pkG4pUG#kؘSscs/I#Dgqh#asZxk\p D=:#"QM&ufq@ub:1+ʭTi7.sYlŃs!F*sAĹYzK,{aq"L J#܁{'\PkVX۵U CSe,FL74c6 u@ztaR"ٞ*abdʠ%[tY֢Q=aP#g 9$r@Fm Fm \ No newline at end of file
diff --git a/sounds/vm-Friends.gsm b/sounds/vm-Friends.gsm
new file mode 100755
index 000000000..45ea8b7da
--- /dev/null
+++ b/sounds/vm-Friends.gsm
@@ -0,0 +1,4 @@
+)`PC[uo[ԝH-^,ebhע[UCiۘks jGlM֜ٶ3]AyqBӒ8alՆ[/[7#B5RiZ="I[؁q֘qy6Zt婽df-p⁧tYUVZkkQ# baH9P$V#˛ށCVB$[U"HKPٚږA\)+v5#֫UsEAm̡.dK<:Hܔ%DNz)SZ7dkSf€'aZ
+ܚhXfwIuhHC!U_MR3+9R"`k5A]עa!^kضtRe}pȁk{NHZm&`iΡYRTX+vf,h:V\᪡*ؒ.!$t@ݞP]ס(dam`ƺ5at霭Yߜ-[(EX栒J.qr.čqBޢ ^"lҠޢ&vTG}u"nn gGEm]إv
+6Ԟm%8`ֲ~DT*EN"ѷcZBe4_[Rlq^uٛtsd !ɯLPWqiWf8presuDmr|Ǫsq軰qbsu3֯rfsE+A}s6'Bs2qHR/iVsQsk/%s<T.Ƚ צ+[sBdq)(4ts㖭 6-Fs(ؐ<qEbqȫd 碑ql4HҝlFIf"X8$q'|qGQo
+zr3o&=U"oG3֢b<f/zH:DدE0s( k!;H6#e6ڤ1tרd:ϐ֞DmBOm#BkH\DdT&tmiD+l4q6ڥYqU$Ib`m"'_T,o¨2[o[jB{΋^Mܣn\8eUaޢ`ۍ}[clBvusr[9t[qLebP$jȔNzOo#L+q$VOp(RPviU Zٮml6i2_Zñ-q{mփ4l㭑OYֵX"DfT[|²#lym˞骈W#;(_zܢҁV&qi2*Jv19̘ոzbZҁRAyס#d;6Yԁl"]e\za:Y$T@[.$| K%K$ K%Id \ No newline at end of file
diff --git a/sounds/vm-INBOX.gsm b/sounds/vm-INBOX.gsm
new file mode 100755
index 000000000..d1984cdf4
--- /dev/null
+++ b/sounds/vm-INBOX.gsm
Binary files differ
diff --git a/sounds/vm-Old.gsm b/sounds/vm-Old.gsm
new file mode 100755
index 000000000..dd6704d38
--- /dev/null
+++ b/sounds/vm-Old.gsm
Binary files differ
diff --git a/sounds/vm-Work.gsm b/sounds/vm-Work.gsm
new file mode 100755
index 000000000..38c2f7563
--- /dev/null
+++ b/sounds/vm-Work.gsm
Binary files differ
diff --git a/sounds/vm-and.gsm b/sounds/vm-and.gsm
new file mode 100755
index 000000000..1e248eb57
--- /dev/null
+++ b/sounds/vm-and.gsm
@@ -0,0 +1,6 @@
+ҐrPIkXb
+-HX"C 6D&gКh9cCJ⮈B$00҆n'+Z!b][b,һbaӍT3 іT`Ք<gR1K{##Eՙ#"N6{ǻ#s+`Fuى[E]/[DyGBu)W͙@חiQ}*dʊ9l:ө̿sݩKF`aYX1)g;_Z#@UWXB0ٍeڢ<܇RuvX[Ӵᤢ5
+29wbx+aUQk,q[+)ܕj8뼢D$X %xt­ݥ]:ڣU\Uj\ф c~/]oki\jˋbQeDU+AlU-ƗaY׊lfpj4{F7\f6G|QԡzoZbZRO4W5}^4ݰ#{H~fnGҁ\XޣaZaʧgʴf4&\v&ZF\&O[ w&]";=>ؠXfNLz2h 3T?ےц8+؁ZInQr/=QYwdb*37[K"ZAB)(:Rwc4¥`E"סUyCe"dn/beJ0T_
+j¥$TH?
+5:ATR1kN¬m6v>B
+/wbzSoyۃiZs[$AuTtwPNj$Z~M`eC:ґWjkҥ!"UgQ] 9ݤ?*S9gpV&gi/iDʒi-RngHˑDi:g2r5s3ύ( C`gA#iƛ~.u֞s:gQώ'du[ip&wgi [676rϓۑg5,i1( !qȓ\ ztvli&gQSjƌQoc4gȜq{.k1q7iQ-SkK#D`c{jkmjſkz.ȩױ^6mSh,$&m\Hͮr&mRG,E$P6ڮj#29PjLP{# 쵩oo8m Ԥy|խoi2 q+Vm7?to[*ʕnE4¥GN[jңznߛF)[%];-܆n$&lǿQQ"؆7ڦBrU5m$ O8$"}2k&GJmC% mnG؃ `3ïsŇ5̌jEy$k0(_܋c܄NnZ 4p„g`ΫIu6`{"4{:cd%!dr:l.Tݓ܋v[BP[Щ8+Ԟbig9N%iDCǧkCS ehԤuh_ͳDܭ~-#BnJ,ƗUĦ8jWb5\p%֜©,~C֛XάҡYc]Zp6ѤԢ acA eBG+bZe:`vS<T}"ԭۑY7Yu‘E$jKѧ$jeנXSV=֛!~-@obHbaIAYʢm5;BUO* vI$ \ No newline at end of file
diff --git a/sounds/vm-changeto.gsm b/sounds/vm-changeto.gsm
new file mode 100755
index 000000000..49963634b
--- /dev/null
+++ b/sounds/vm-changeto.gsm
@@ -0,0 +1,8 @@
+6PiIT#n7kJŽb(G`rA["ӴìYnIi_ajIքb(r}YbrQ󮄅ٟ!"j*bLx!/Kur![deV5㪢cS:}! J5S[˘TT}wDvh[v(&d))Z&%f#_2"C㱙bA+٠aȢop$ՂJKzYc(ʃם nKD@x b1qמzRƔڣH R}3ƢGSk(]d׷Lg8Uee(X+۩)ȥR5oW񴜎];Il-\GzIjm43zgsBD%t%W4pjaԨ#
+2"8N?iܢ-4bI켮"Pn[[OvMrxO9jZ[Q`p]kĨ[Go3j[8feeiJ{[N8[ Sk$MӘun][3ͷ"_Zo#-
+xY仡湳ibVn[[YJ)?f\ k9Kܑ+VTrӰn[Y(KI8Z1nW Uj*quBi&tRECUe^m&a~1$ᒧ(Y ֫Ul9CTٕIj;/V}=FTĔ_]飭XJEg_dhCa1ܢ'q*` -+T'甥4-,m7zЏSԴ5Mi)ڰJ0ϛ:pZ-s{~jfg>3eE Vrc0.
+UmP߭ި)gcQISͩ WZ9`݌ c)[]dZj]dw ZƢAYU޸LnKoZer٧X9$Xrn\Yu lElVԝb%b¨g!tb(yb\#诜MGϵ·Rb嗓t&\g#&DƥGmL%5V&eVKaaWcFCFc|ju2ai-6:ha^b(`sbVaCR$_i_iE-Vzvנj]-N]n;nF]ʩcS8]x̜#Z&4]ܪ(g]LV\xp2DIuYU)'Z͢l;BĨsI9;\ ͩdgzc\SӸز`aF_'OkflaYyO[Y֘o8N]Zgi→BGoYdߒdK&jKk9JMf5)@ SiI$@e)\JUZ:-ĎjS&r0A>h Һa,)2䧷ocf]$[ڪlr.lÅyEbU!qFR9)؋;3EuKƢYzȸnKhQnN9XI"mʚfm$&Yw\7fWh^Q,Z['vB![ӤWF:p۱(xY
++f; ӣW(F&W%WBI.|W>ړ;ӤW#ʺϭhUE?+
+-ԠXW$]2t&KJXc.K`GYcDNhWB5&"/B̐ȃ:^Y2 ݬTln{%t!bɷC5@Du:כ\yŧx$q*?U<8QK>؎t---'(ia|5\4^!k1qlA6 +ߌrՑ# E,©#j3`yaF!P=QhPu
+{$&rl+p7KFv8h[ -$ģ3 Z֧idhA@%EgmyH$ۧ'fXdqj(#0'-ISc?$*YPHzB˖F(/\#iTҀFVǵ#6Gb"XUPS5<#+;
+r*nuȕcZWnV%2Sגd٭]٦lލX\?bŻm%lFsY$GeD0О5 m݊ٔd㝳Ԃ'q7C!Ir*{d"eTQԂFڞ'+;Hޝ+_YjT4ޭ`xƉ \ No newline at end of file
diff --git a/sounds/vm-delete.gsm b/sounds/vm-delete.gsm
new file mode 100755
index 000000000..ba15d85b7
--- /dev/null
+++ b/sounds/vm-delete.gsm
Binary files differ
diff --git a/sounds/vm-first.gsm b/sounds/vm-first.gsm
new file mode 100755
index 000000000..795ed9add
--- /dev/null
+++ b/sounds/vm-first.gsm
Binary files differ
diff --git a/sounds/vm-for.gsm b/sounds/vm-for.gsm
new file mode 100755
index 000000000..0f5881379
--- /dev/null
+++ b/sounds/vm-for.gsm
Binary files differ
diff --git a/sounds/vm-helpexit.gsm b/sounds/vm-helpexit.gsm
new file mode 100755
index 000000000..ecce17422
--- /dev/null
+++ b/sounds/vm-helpexit.gsm
Binary files differ
diff --git a/sounds/vm-incorrect.gsm b/sounds/vm-incorrect.gsm
index 486a9b8b4..8b78becf3 100755
--- a/sounds/vm-incorrect.gsm
+++ b/sounds/vm-incorrect.gsm
Binary files differ
diff --git a/sounds/vm-last.gsm b/sounds/vm-last.gsm
new file mode 100755
index 000000000..5fe7b7f51
--- /dev/null
+++ b/sounds/vm-last.gsm
Binary files differ
diff --git a/sounds/vm-next.gsm b/sounds/vm-next.gsm
new file mode 100755
index 000000000..7786bf6ff
--- /dev/null
+++ b/sounds/vm-next.gsm
Binary files differ
diff --git a/sounds/vm-onefor.gsm b/sounds/vm-onefor.gsm
new file mode 100755
index 000000000..71b9c65d8
--- /dev/null
+++ b/sounds/vm-onefor.gsm
Binary files differ
diff --git a/sounds/vm-opts.gsm b/sounds/vm-opts.gsm
new file mode 100755
index 000000000..3e9006dfc
--- /dev/null
+++ b/sounds/vm-opts.gsm
Binary files differ
diff --git a/sounds/vm-press.gsm b/sounds/vm-press.gsm
new file mode 100755
index 000000000..35507909f
--- /dev/null
+++ b/sounds/vm-press.gsm
Binary files differ
diff --git a/sounds/vm-prev.gsm b/sounds/vm-prev.gsm
new file mode 100755
index 000000000..de964a73c
--- /dev/null
+++ b/sounds/vm-prev.gsm
@@ -0,0 +1,6 @@
+ibP&GD,uꦄv2P)so(Dلס*RJa4e`\Ă!Кޛ بzg\ơJ%2ځ*\\a!b25_Xґ$ew [H-#;[6ʒwxbfkP\̤>bBjB 8݃Y"sw}ˡzآE <d]ם`3mR|ⰒUBb6B9ۊa6lU-5k9"飒daے΂32/dJ)aZ_JjX^\ܡ<iG$uNЋ ڜVKeCҲA$bЁ:TM¡lbWRGSߛآtuZUSlۺ2ښ5fYԒu^"3ɽp+i9Y)ۜзbH%Ѓތ={V:Xu!%mP6c$-ӼfGœm׫(ɠIXbgQȃuKܳ0֫%^aǦY]&ni7UJ4a7D7l]ō+$eel6jdž)(foɨMٚ:Pg(bH(fWGVRGՠ7(P(7s8,IanjjJɤ+GBզm9b}e
+j̻Iqhm[Qʛ%{VBDxY#[ɚ_PN'),Zv'm"JdɨZ mundo圄v;l^wnE9Q̖i(1K9-&5 %v "¹ս ]c%\FCF:zݜȾ7\اR;R`;¬ہ\گtץz¨$a)$ВTӱ5إˬ^.Lkc&-ΡcA5}!Ycw)a*fTQN=k ]CJo:Y`^rʎXufȸXҫRG4DHDnzlYD yȜ3K=ld :JWe$>[IW/]Vm$C=`O)˥8cUU̔5ү-ScT-bC <jUd\[#U&C$[0eBψfUС5UVQWC)\WxWp9ViWft; Y&+5Yedp['_h}޷)%_Pk{a%T:~7 %g):Vԩ:j65q(k)H1o(eʇl/yx%sfbfsJsk0yִE+!u♢muEdRmb&.'ꤹ|6NzB5 alބ)2Xv
+s3]ףdu/4͔nrŨ6օ9 [Ds\c#$6L"nM5cvW`ȣٵrv'aDj].&a'1/,bncpÉn!턣+&CgYY¥JFHPO,gY&[^ťZe&JoH76K"^gDrh)fTԐ0o&G"mZ辧.8߃r$:&1Cʥݱ[tQ6a^`y{A<QhQTOm5T!G~v\"5kϛ5u8ܒQ'j8a+sŤBsh=.)FW/թiw%etAzZxz-GuڥU;ԟn,"y B'Qx,쁺EVaBlUtgP'r,1"&_cf.jMJp4Բ'$f&Y77AjKIIr,#MImCrƣVJ~a"nCdGy"0QJ#!y mxȢ#Rw2iFI}Q]xb4RWɭ Y_)eS%fm_KHq(fhf_,qF#y_%/3#hF]E(sF4kB`qW[(YG`ǎRվ[FKbW5Jڰ(r'ž-\ocZ_*a%lV]caZ쪶16Cg_CGO-Ȣ#iܼ+KJta!kbA!hbheGe#\+_E'!Y~dK=V߂Rdm'*kUZ*ivMg*td!w'.vƥ̅ڞyi#V}I<,7ZvH$5~#*kٜqf@ܖȗ iȆQ-7Xevqiq7gRu&TYhV&hѷ XXۍX$2ZŌפyٵ8*D܍k%yb.(%yEn,S%hHPi^Gjdnj.Y~+ިic1;AlKحnlFx =Xּi?\+D]1)ڒ烽+fX͞Έ7#@$4He*;=ɢúrz] Q8u'z`+lŲn s"ʹG6~1~ՠjcQgkzQ⠣8ӎ(U
+"d=iͯEEqD&<@ W\vQjRfwv XؑMA#R8Ȫq2hYԩv]IՋJI[HتpدeFU5֩-9iv͆m$w&FKZ'Z<CF)!Dej'؛g*֤]~u;oaFT؜تiYFRtZ
+LނS(DhmڨD`PSf-^~h'3櫮[+YZꈦ*nfX iI')`ze$Ȼ8dr֓F%tMGrݴbu$B+^*kʣۘCe^ck&DY,{e# rr6&fw&B5ߠ7w婙i>w#~*f[CZݩw).1)hЧwc^D;7{]Y|#<*WDKsB2aVi#k#֐꡼Kء2TY%䉨⡵u”`YĞBG&ؚYpVIFh'$nWЁhdli)m!wAb%JoE\5[ag79h!Z鉨tFt%#ݶcPMԤ,#JQ
+쎅+vҪʢNI#']}bXLԔIpCJ.[&CvdB:pZa7MiqRW0aUp4j$%~v])EZ&ٟ]؁aZQBlTǝ桫=㘢""$סiajA8Yh*TTh$"נek䝒[n9oSoOLKvb!fᲃiۼHhZ<s&ס%#e䁰6mV:fYA$&-"V &v;ӮJٜ6u&᫥ ӓ&Ρӎ窡GTECZ2`ZWu)S-NMPJd X'AfHtPY 1Qsa0])gY`CoaؠaZێtǛ…lڍݛ"+{l!eKdU@4܎Y# \ No newline at end of file
diff --git a/sounds/vm-repeat.gsm b/sounds/vm-repeat.gsm
new file mode 100755
index 000000000..b1b62aa7b
--- /dev/null
+++ b/sounds/vm-repeat.gsm
Binary files differ
diff --git a/sounds/vm-saved.gsm b/sounds/vm-saved.gsm
new file mode 100755
index 000000000..04f3656e0
--- /dev/null
+++ b/sounds/vm-saved.gsm
@@ -0,0 +1,7 @@
+ܙP)~XU{CH̀R#`4r˔T
+#!ʶMu-IWڢdK~j+BT&,iU83mցTybcN1BQ&P ‚:SoyZk6g"lj2S%NmyWvcA=E\ඡHRيP"G6.H'ZBb*$쁒o2֛YH*^8k"FX A.T[YcQo³5tY>f^@fC6Jڂ\SPAe{<&XæjXǃ8&uGlj'…),,ng$-6<٩@Љ_K/wl~V2)cg,4d`ؘ$.:moVOv1eoʈ %PnM~~;Jϒ %٭aHr%=X1òx6e( c5RZU &Ѯ{:3QJ٨k~kfk"ŨxLjcj,X򣓝CYHꚲ!"S ^:r5,zX%ctU%L`T!r~ZI hm.X_THܴJa*{ipsi#kkgźgt9dԡi'$Ae46og4 c3*iؔbcl3:3 is6۱m[I8Sf4qsi98kSTmkM]dF׍Y8DV {6mTmpr&j}ޯRpovUU֠[|R)$qQG$NDN,r9Ruq7>"Stp'hqQ\yν{N(עC2{nG_lF&wof$CrN&ORēF .;7eD#J7=NXV܉2omԌWl +aJ>}-JH
+ jS8mIpvC:$UۊK4y/; b.-ĸdlt9#f[X•v! asbܢ!#
+{5"6qƣy٬Z
+Z[s)|Txvu)KUqۢabVCچ(#|#T"ȍ(]"Nj5`%)RQhmS%p:ZcJy52],ȩ܂ybaIeXΪVPtU%٩r] oLb+sd/7G=[QU#U򥄨&Xݪ:4toأ–bxETrD~GHerGnS:7{·0ؠ¥VZ†iH& LBZYQuC4(R6v
+쾁ӜM[Ң8n%B&&w!Y)*h؞!ba" Qj#kxlzFEjפˡ[^? ez̒c9c%b~mHߊDb[ӷ\Hi8lǤ(>ށĦ_ZcԊ"w N")2ɿ#(Qޢy!\lThosA ]3S$IWb9ҵAן*עXR)"to!=TOB(mZRP"ta%TttgB.ܠT0؉FzURdQ-Ll┑B[ԖY
+PIVjWd'*n5 m \ No newline at end of file
diff --git a/sounds/vm-savedto.gsm b/sounds/vm-savedto.gsm
new file mode 100755
index 000000000..00e96cae8
--- /dev/null
+++ b/sounds/vm-savedto.gsm
Binary files differ
diff --git a/sounds/vm-savefolder.gsm b/sounds/vm-savefolder.gsm
new file mode 100755
index 000000000..dbc9d072f
--- /dev/null
+++ b/sounds/vm-savefolder.gsm
Binary files differ
diff --git a/sounds/vm-savemessage.gsm b/sounds/vm-savemessage.gsm
new file mode 100755
index 000000000..7d06542e1
--- /dev/null
+++ b/sounds/vm-savemessage.gsm
Binary files differ
diff --git a/sounds/vm-tocancel.gsm b/sounds/vm-tocancel.gsm
new file mode 100755
index 000000000..a53289ac4
--- /dev/null
+++ b/sounds/vm-tocancel.gsm
Binary files differ
diff --git a/sounds/vm-toforward.gsm b/sounds/vm-toforward.gsm
new file mode 100755
index 000000000..627d52eec
--- /dev/null
+++ b/sounds/vm-toforward.gsm
Binary files differ
diff --git a/sounds/vm-undelete.gsm b/sounds/vm-undelete.gsm
new file mode 100755
index 000000000..7496f0647
--- /dev/null
+++ b/sounds/vm-undelete.gsm
Binary files differ