Description: Now mpg321 shows the initial xterm title.
Author: Nanakos Chrysostomos <nanakos@wired-net.gr>

--- mpg321-0.2.11.orig/mpg321.c
+++ mpg321-0.2.11/mpg321.c
@@ -64,7 +64,7 @@ struct termios *tty_ts_orig_pt = NULL;
 static char temp[1024];
 char *ctty_path();
 int set_xterm = 0;
-
+char title[BUFSIZ];
 
 int shuffle_play;
 int stop_playing_file = 0;
@@ -307,6 +307,7 @@ int main(int argc, char *argv[])
     if(set_xterm)
     {
 	    tty_control();
+	    get_term_title(title);
     }
     /* Play the mpeg files or zip it! */
     while((currentfile = get_next_file(pl, &playbuf)))
@@ -583,7 +584,7 @@ int main(int argc, char *argv[])
     if(set_xterm)
     {
 	    set_tty_restore();
-	    osc_print(0,0,"Terminal");
+	    osc_print(0,0,title);
 	    if (ctty)
 		    fclose(ctty);
     }
@@ -815,3 +816,38 @@ char *ctty_path()
                 break;
    return tty_path;
 }
+
+int tty_read(char *output,size_t size)
+{
+	int n;
+
+	n = read(TTY_FILENO,output,size-1);
+	if(n == -1)
+	{
+		perror("read");
+	}
+	 return n;
+}
+
+void get_term_title(char *title)
+{
+	int n;
+	static char buffer[BUFSIZ];
+	char temp[20];
+
+	snprintf(temp,sizeof(temp),"\033[%dt",21);
+
+	raw_print(temp);
+
+	n = tty_read(buffer,sizeof(buffer));
+	if(n==1)
+		n+= tty_read(buffer+1,sizeof(buffer)-1);
+
+	while( !(buffer[n-2] == '\033' && buffer[n-1] == '\\') ) {
+		n += tty_read(buffer+n,sizeof(buffer)-n);
+	}
+
+	buffer[n-2]= '\0';
+
+	snprintf((char *)title,sizeof(buffer),"%s",buffer+3);
+}

