You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by st...@apache.org on 2003/06/06 11:23:47 UTC

cvs commit: modperl-docs/src/docs/2.0/user/porting/code apache_mp3_2.diff apache_mp3_7.diff apache_mp3_9.diff

stas        2003/06/06 02:23:47

  Modified:    src/docs/2.0/user config.cfg
  Added:       src/docs/2.0/user/porting/code apache_mp3_2.diff
                        apache_mp3_7.diff apache_mp3_9.diff
  Log:
  several long patches live in their own files
  
  Revision  Changes    Path
  1.25      +3 -0      modperl-docs/src/docs/2.0/user/config.cfg
  
  Index: config.cfg
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/config.cfg,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- config.cfg	23 May 2003 08:55:50 -0000	1.24
  +++ config.cfg	6 Jun 2003 09:23:47 -0000	1.25
  @@ -62,5 +62,8 @@
   
       changes => 'Changes.pod',
   
  +    copy_glob => [qw(
  +        porting/code
  +    )],
   );
   
  
  
  
  1.1                  modperl-docs/src/docs/2.0/user/porting/code/apache_mp3_2.diff
  
  Index: apache_mp3_2.diff
  ===================================================================
  --- Apache/MP3.pm.2	2003-06-06 15:17:22.000000000 +1000
  +++ Apache/MP3.pm	2003-06-06 15:16:21.000000000 +1000
  @@ -55,6 +55,14 @@
   my $NO  = '^(no|false)$';  # regular expression
   my $YES = '^(yes|true)$';  # regular expression
   
  +sub get_config {
  +    my $val = shift->r->dir_config(shift);
  +    return defined $val ? $val : '';
  +}
  +
  +sub config_yes { shift->get_config(shift) !~ /$YES/oi; }
  +sub config_no  { shift->get_config(shift) !~ /$NO/oi; }
  +
   sub handler : method {
     my $class = shift;
     my $obj = $class->new(@_) or die "Can't create object: $!";
  @@ -70,7 +78,7 @@
     my @lang_tags;
     push @lang_tags,split /,\s+/,$r->header_in('Accept-language') 
       if $r->header_in('Accept-language');
  -  push @lang_tags,$r->dir_config('DefaultLanguage') || 'en-US';
  +  push @lang_tags,$new->get_config('DefaultLanguage') || 'en-US';
   
     $new->{'lh'} ||=
       Apache::MP3::L10N->get_handle(@lang_tags)
  @@ -343,7 +351,7 @@
       my $file = $subr->filename;
       my $type = $subr->content_type;
       my $data = $self->fetch_info($file,$type);
  -    my $format = $self->r->dir_config('DescriptionFormat');
  +    my $format = $self->get_config('DescriptionFormat');
       if ($format) {
         $r->print('#EXTINF:' , $data->{seconds} , ',');
         (my $description = $format) =~ s{%([atfglncrdmsqS%])}
  @@ -1204,7 +1212,7 @@
   # get fields to display in list of MP3 files
   sub fields {
     my $self = shift;
  -  my @f = split /\W+/,$self->r->dir_config('Fields');
  +  my @f = split /\W+/,$self->get_config('Fields');
     return map { lc $_  } @f if @f;          # lower case
     return qw(title artist duration bitrate); # default
   }
  @@ -1340,7 +1348,7 @@
   sub get_dir {
     my $self = shift;
     my ($config,$default) = @_;
  -  my $dir = $self->r->dir_config($config) || $default;
  +  my $dir = $self->get_config($config) || $default;
     return $dir if $dir =~ m!^/!;       # looks like a path
     return $dir if $dir =~ m!^\w+://!;  # looks like a URL
     return $self->default_dir . '/' . $dir;
  @@ -1348,22 +1356,22 @@
   
   # return true if downloads are allowed from this directory
   sub download_ok {
  -  shift->r->dir_config('AllowDownload') !~ /$NO/oi;
  +  shift->config_no('AllowDownload');
   }
   
   # return true if streaming is allowed from this directory
   sub stream_ok {
  -  shift->r->dir_config('AllowStream') !~ /$NO/oi;
  +  shift->config_no('AllowStream');
   }
   
   # return true if playing locally is allowed
   sub playlocal_ok {
  -  shift->r->dir_config('AllowPlayLocally') =~ /$YES/oi;
  +  shift->config_yes('AllowPlayLocally');
   }
   
   # return true if we should check that the client can accomodate streaming
   sub check_stream_client {
  -  shift->r->dir_config('CheckStreamClient') =~ /$YES/oi;
  +  shift->config_yes('CheckStreamClient');
   }
   
   # return true if client can stream
  @@ -1378,48 +1386,48 @@
   
   # whether to read info for each MP3 file (might take a long time)
   sub read_mp3_info {
  -  shift->r->dir_config('ReadMP3Info') !~ /$NO/oi;
  +  shift->config_no('ReadMP3Info');
   }
   
   # whether to time out streams
   sub stream_timeout {
  -  shift->r->dir_config('StreamTimeout') || 0;
  +  shift->get_config('StreamTimeout') || 0;
   }
   
   # how long an album list is considered so long we should put buttons
   # at the top as well as the bottom
  -sub file_list_is_long { shift->r->dir_config('LongList') || 10 }
  +sub file_list_is_long { shift->get_config('LongList') || 10 }
   
   sub home_label {
     my $self = shift;
  -  my $home = $self->r->dir_config('HomeLabel') ||
  +  my $home = $self->get_config('HomeLabel') ||
       $self->x('Home');
     return lc($home) eq 'hostname' ? $self->r->hostname : $home;
   }
   
   sub path_style {  # style for the path to parent directories
  -  lc(shift->r->dir_config('PathStyle')) || 'staircase';
  +  lc(shift->get_config('PathStyle')) || 'staircase';
   }
   
   # where is our cache directory (if any)
   sub cache_dir    {
     my $self = shift;
  -  return unless my $dir  = $self->r->dir_config('CacheDir');
  +  return unless my $dir  = $self->get_config('CacheDir');
     return $self->r->server_root_relative($dir);
   }
   
   # columns to display
  -sub subdir_columns {shift->r->dir_config('SubdirColumns') || SUBDIRCOLUMNS  }
  -sub playlist_columns {shift->r->dir_config('PlaylistColumns') || PLAYLISTCOLUMNS }
  +sub subdir_columns {shift->get_config('SubdirColumns') || SUBDIRCOLUMNS  }
  +sub playlist_columns {shift->get_config('PlaylistColumns') || PLAYLISTCOLUMNS }
   
   # various configuration variables
  -sub default_dir   { shift->r->dir_config('BaseDir') || BASE_DIR  }
  +sub default_dir   { shift->get_config('BaseDir') || BASE_DIR  }
   sub stylesheet    { shift->get_dir('Stylesheet', STYLESHEET)     }
   sub parent_icon   { shift->get_dir('ParentIcon',PARENTICON)      }
   sub cd_list_icon  {
     my $self   = shift;
     my $subdir = shift;
  -  my $image = $self->r->dir_config('CoverImageSmall') || COVERIMAGESMALL;
  +  my $image = $self->get_config('CoverImageSmall') || COVERIMAGESMALL;
     my $directory_specific_icon = $self->r->filename."/$subdir/$image";
     return -e $directory_specific_icon 
       ? join ("/",$self->r->uri,escape($subdir),$image)
  @@ -1427,7 +1435,7 @@
   }
   sub playlist_icon {
     my $self = shift; 
  -  my $image = $self->r->dir_config('PlaylistImage') || PLAYLISTIMAGE;
  +  my $image = $self->get_config('PlaylistImage') || PLAYLISTIMAGE;
     my $directory_specific_icon = $self->r->filename."/$image";
   warn $directory_specific_icon;
     return -e $directory_specific_icon
  @@ -1444,7 +1452,7 @@
   sub cd_icon {
     my $self = shift;
     my $dir = shift;
  -  my $coverimg = $self->r->dir_config('CoverImage') || COVERIMAGE;
  +  my $coverimg = $self->get_config('CoverImage') || COVERIMAGE;
     if (-e "$dir/$coverimg") {
       $coverimg;
     } else {
  @@ -1453,7 +1461,7 @@
   }
   sub missing_comment {
     my $self = shift;
  -  my $missing = $self->r->dir_config('MissingComment');
  +  my $missing = $self->get_config('MissingComment');
     return if $missing eq 'off';
     $missing = $self->lh->maketext('unknown') unless $missing;
     $missing;
  @@ -1464,7 +1472,7 @@
     my $self = shift;
     my $data = shift;
     my $description;
  -  my $format = $self->r->dir_config('DescriptionFormat');
  +  my $format = $self->get_config('DescriptionFormat');
     if ($format) {
       ($description = $format) =~ s{%([atfglncrdmsqS%])}
         {$1 eq '%' ? '%'
  @@ -1495,7 +1503,7 @@
       }
     }
   
  -  if ((my $basename = $r->dir_config('StreamBase')) && !$self->is_localnet()) {
  +  if ((my $basename = $self->get_config('StreamBase')) && !$self->is_localnet()) {
       $basename =~ s!http://!http://$auth_info! if $auth_info;
       return $basename;
     }
  @@ -1536,7 +1544,7 @@
   sub is_localnet {
     my $self = shift;
     return 1 if $self->is_local;  # d'uh
  -  my @local = split /\s+/,$self->r->dir_config('LocalNet') or return;
  +  my @local = split /\s+/,$self->get_config('LocalNet') or return;
   
     my $remote_ip = $self->r->connection->remote_ip . '.';
     foreach (@local) {
  
  
  
  1.1                  modperl-docs/src/docs/2.0/user/porting/code/apache_mp3_7.diff
  
  Index: apache_mp3_7.diff
  ===================================================================
  --- Apache/MP3.pm.7	2003-06-06 17:04:27.000000000 +1000
  +++ Apache/MP3.pm	2003-06-06 17:13:26.000000000 +1000
  @@ -129,7 +129,7 @@
     my $self = shift;
   
     $self->r->send_http_header( $self->html_content_type );
  -  return OK if $self->r->header_only;
  +  return Apache::OK if $self->r->header_only;
   
     print start_html(
   		   -lang => $self->lh->language_tag,
  @@ -246,20 +246,20 @@
         $self->send_playlist(\@matches);
       }
   
  -    return OK;
  +    return Apache::OK;
     }
   
     # this is called to generate a playlist for selected files
     if (param('Play Selected')) {
  -    return HTTP_NO_CONTENT unless my @files = param('file');
  +    return Apache::HTTP_NO_CONTENT unless my @files = param('file');
       my $uri = dirname($r->uri);
       $self->send_playlist([map { "$uri/$_" } @files]);
  -    return OK;
  +    return Apache::OK;
     }
   
     # otherwise don't know how to deal with this
     $self->r->log_reason('Invalid parameters -- possible attempt to circumvent checks.');
  -  return FORBIDDEN;
  +  return Apache::FORBIDDEN;
   }
   
   # this generates the top-level directory listing
  @@ -273,7 +273,7 @@
       my $query = $self->r->args;
       $query = "?" . $query if defined $query;
       $self->r->header_out(Location => "$uri/$query");
  -    return REDIRECT;
  +    return Apache::REDIRECT;
     }
   
     return $self->list_directory($dir);
  @@ -289,9 +289,9 @@
   
     if ($is_audio && !$self->download_ok) {
       $self->r->log_reason('File downloading is forbidden');
  -    return FORBIDDEN;
  +    return Apache::FORBIDDEN;
     } else {
  -    return DECLINED;  # allow Apache to do its standard thing
  +    return Apache::DECLINED;  # allow Apache to do its standard thing
     }
   
   }
  @@ -302,17 +302,17 @@
     my $self = shift;
     my $r = $self->r;
   
  -  return DECLINED unless -e $r->filename;  # should be $r->finfo
  +  return Apache::DECLINED unless -e $r->filename;  # should be $r->finfo
   
     unless ($self->stream_ok) {
       $r->log_reason('AllowStream forbidden');
  -    return FORBIDDEN;
  +    return Apache::FORBIDDEN;
     }
   
     if ($self->check_stream_client and !$self->is_stream_client) {
       my $useragent = $r->header_in('User-Agent');
       $r->log_reason("CheckStreamClient is true and $useragent is not a streaming client");
  -    return FORBIDDEN;
  +    return Apache::FORBIDDEN;
     }
   
     return $self->send_stream($r->filename,$r->uri);
  @@ -322,12 +322,12 @@
   sub send_playlist {
     my $self = shift;
     my ($urls,$shuffle) = @_;
  -  return HTTP_NO_CONTENT unless @$urls;
  +  return Apache::HTTP_NO_CONTENT unless @$urls;
     my $r = $self->r;
     my $base = $self->stream_base;
   
     $r->send_http_header('audio/mpegurl');
  -  return OK if $r->header_only;
  +  return Apache::OK if $r->header_only;
   
     # local user
     my $local = $self->playlocal_ok && $self->is_local;
  @@ -377,7 +377,7 @@
         $r->print ("$base$_?$stream_parms$CRLF");
       }
     }
  -  return OK;
  +  return Apache::OK;
   }
   
   sub stream_parms {
  @@ -468,7 +468,7 @@
     my $self = shift;
     my $dir  = shift;
   
  -  return DECLINED unless -d $dir;
  +  return Apache::DECLINED unless -d $dir;
   
     my $last_modified = (stat(_))[9];
   
  @@ -478,15 +478,15 @@
       my ($time, $ver) = $check =~ /^([a-f0-9]+)-([0-9.]+)$/;
   
       if ($check eq '*' or (hex($time) == $last_modified and $ver == $VERSION)) {
  -      return HTTP_NOT_MODIFIED;
  +      return Apache::HTTP_NOT_MODIFIED;
       }
     }
   
  -  return DECLINED unless my ($directories,$mp3s,$playlists,$txtfiles)
  +  return Apache::DECLINED unless my ($directories,$mp3s,$playlists,$txtfiles)
       = $self->read_directory($dir);
   
     $self->r->send_http_header( $self->html_content_type );
  -  return OK if $self->r->header_only;
  +  return Apache::OK if $self->r->header_only;
   
     $self->page_top($dir);
     $self->directory_top($dir);
  @@ -514,7 +514,7 @@
     print hr                         unless %$mp3s;
     print "\n<!-- end main -->\n";
     $self->directory_bottom($dir);
  -  return OK;
  +  return Apache::OK;
   }
   
   # print the HTML at the top of the page
  @@ -1268,8 +1268,8 @@
   
     my $mime = $r->content_type;
     my $info = $self->fetch_info($file,$mime);
  -  return DECLINED unless $info;  # not a legit mp3 file?
  -  my $fh = $self->open_file($file) || return DECLINED;
  +  return Apache::DECLINED unless $info;  # not a legit mp3 file?
  +  my $fh = $self->open_file($file) || return Apache::DECLINED;
     binmode($fh);  # to prevent DOS text-mode foolishness
   
     my $size = -s $file;
  @@ -1317,7 +1317,7 @@
     $r->print("Content-Length: $size$CRLF");
     $r->print("Content-Type: $mime$CRLF");
     $r->print("$CRLF");
  -  return OK if $r->header_only;
  +  return Apache::OK if $r->header_only;
   
     if (my $timeout = $self->stream_timeout) {
       my $seconds  = $info->{seconds};
  @@ -1330,12 +1330,12 @@
         $bytes -= $b;
         $r->print($data);
       }
  -    return OK;
  +    return Apache::OK;
     }
   
     # we get here for untimed transmits
     $r->send_fd($fh);
  -  return OK;
  +  return Apache::OK;
   }
   
   # called to open the MP3 file
  
  
  
  1.1                  modperl-docs/src/docs/2.0/user/porting/code/apache_mp3_9.diff
  
  Index: apache_mp3_9.diff
  ===================================================================
  --- Apache/MP3.pm.9	2003-06-06 17:27:45.000000000 +1000
  +++ Apache/MP3.pm	2003-06-06 17:55:14.000000000 +1000
  @@ -82,8 +82,8 @@
     $new->{'r'} ||= $r if $r;
   
     my @lang_tags;
  -  push @lang_tags,split /,\s+/,$r->header_in('Accept-language') 
  -    if $r->header_in('Accept-language');
  +  push @lang_tags,split /,\s+/,$r->headers_in->{'Accept-language'} 
  +    if $r->headers_in->{'Accept-language'};
     push @lang_tags,$new->get_config('DefaultLanguage') || 'en-US';
   
     $new->{'lh'} ||=
  @@ -272,7 +272,7 @@
       my $uri = $self->r->uri;
       my $query = $self->r->args;
       $query = "?" . $query if defined $query;
  -    $self->r->header_out(Location => "$uri/$query");
  +    $self->r->headers_out->{Location} = "$uri/$query";
       return Apache::REDIRECT;
     }
   
  @@ -310,7 +310,7 @@
     }
   
     if ($self->check_stream_client and !$self->is_stream_client) {
  -    my $useragent = $r->header_in('User-Agent');
  +    my $useragent = $r->headers_in->{'User-Agent'};
       $r->log_reason("CheckStreamClient is true and $useragent is not a streaming client");
       return Apache::FORBIDDEN;
     }
  @@ -472,9 +472,9 @@
   
     my $last_modified = (stat(_))[9];
   
  -  $self->r->header_out('ETag' => sprintf("%lx-%s", $last_modified, $VERSION));
  +  $self->r->headers_out->{'ETag'} = sprintf("%lx-%s", $last_modified, $VERSION);
   
  -  if (my $check = $self->r->header_in("If-None-Match")) {
  +  if (my $check = $self->r->headers_in->{"If-None-Match"}) {
       my ($time, $ver) = $check =~ /^([a-f0-9]+)-([0-9.]+)$/;
   
       if ($check eq '*' or (hex($time) == $last_modified and $ver == $VERSION)) {
  @@ -1283,8 +1283,8 @@
     my $genre       = $info->{genre} || $self->lh->maketext('unknown');
   
     my $range = 0;
  -  $r->header_in("Range")
  -    and $r->header_in("Range") =~ m/bytes=(\d+)/
  +  $r->headers_in->{"Range"}
  +    and $r->headers_in->{"Range"} =~ m/bytes=(\d+)/
       and $range = $1
       and seek($fh,$range,0);
   
  @@ -1383,11 +1383,11 @@
   # return true if client can stream
   sub is_stream_client {
     my $r = shift->r;
  -  $r->header_in('Icy-MetaData')   # winamp/xmms
  -    || $r->header_in('Bandwidth')   # realplayer
  -      || $r->header_in('Accept') =~ m!\baudio/mpeg\b!  # mpg123 and others
  -	|| $r->header_in('User-Agent') =~ m!^NSPlayer/!  # Microsoft media player
  -	  || $r->header_in('User-Agent') =~ m!^xmms/!;
  +  $r->headers_in->{'Icy-MetaData'}   # winamp/xmms
  +    || $r->headers_in->{'Bandwidth'}   # realplayer
  +      || $r->headers_in->{'Accept'} =~ m!\baudio/mpeg\b!  # mpg123 and others
  +	|| $r->headers_in->{'User-Agent'} =~ m!^NSPlayer/!  # Microsoft media player
  +	  || $r->headers_in->{'User-Agent'} =~ m!^xmms/!;
   }
   
   # whether to read info for each MP3 file (might take a long time)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org